背景知识
  联网就是通过网络将主机进行互联并采用不同的规范配置网络上的节点。我们以 TCP/IP 作为网络栈,所有的操作都是基于它进行的。网络是计算机系统中重要的部分。连接在网络上的每个节点都分配了一个用作标识作用的独一的 IP 地址。有很多联网参数,如子网掩码、路由、端口和 DNS 等,我们需要对这些知识有一个基本的理解。

  Internet 依靠 TCP/IP 协议,在全球范围内实现不同硬件结构、不同操作系统、不同网络系统的互联。在 Internet 上,每一个节点都依靠唯一的 IP 地址互相区分和相互联系。IP 地址是一个 32 位二进制数的地址,由 4 个 8 位字段组成,每个字段之间用点号隔开,用于标识 TCP/IP 宿主机。每个 IP 地址都包含两部分:网络 ID 和主机ID。网络 ID 标识在同一个物理网络上的所有宿主机,主机 ID 标识该物理网络上的每一个宿主机,于是整个 Internet 上的每个计算机都依靠各自唯一的 IP 地址来标识。IP 地址构成了整个 Internet 的基础,它是如此重要,每一台联网的计算机无权自行设定 IP 地址,有一个统一的机构 IANA 负责对申请的组织分配唯一的网络 ID,而该组织可以对自己的网络中的每一个主机分配一个唯一的主机 ID。

  一些使用网络的应用通过打开并连接到防火墙端口进行运作。每一个应用都可以提供数据传输、远程 shell 登录等服务。有些管理任务可以通过网络进行。而 shell 脚本也能用来配置网络节点、测试周围主机是否可用、自动化执行远程主机命令等。

  Web 正在成为反映技术发展的晴雨表,数据处理都要经由它来完成。尽管 shell 脚本没法像 PHP 一样在 Web 上大包大揽,但总还是有一些活适合它。

  

1.测试网络是否连通
ping的全名为Packet Internet Grope , 即因特网包探索器Ping 主要用于检测网络的连通性。ping 可以测试计算机名和计算机的 ip 地址,验证与远程计算机的连接,通过将 icmp 回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接,该命令只有在安装了 tcp/ip 协议后才可以使用。执行 ping 指令会使用 ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

常用语法:

ping [-c<完成次数>][-w<等待时间(s)]主机名称或 IP 地址

示例:

64 bytes:表示本次传送的 ICMP 包的大小,此值为预设值
icmp_seq=1:ICMP 所侦测的次数,第一次为 1,第二次为 2,依次类推
ttl=52: 生存时间
time:响应时间
备注:
TTL 是生存时间的外语缩写,就是说这个ping的数据包能在网络上存在多少时间。当对网络上的主机进行 ping 操作的时候,本地机器会发出一个数据包,数据包经过一定数量的路由器传送到目的主机但是由于很多的原因,一些数据包不能正常传送到目的主机,那如果不给这些数据包一个生存时间的话,这些数据包会一直在网络上传送,导致网络开销的增大。当数据包传送到一个路由器之后,TTL就自动减 1,如果减到 0 了还是没有传送到目的主机,那么就自动丢失。

ICMP 是(Internet Control Message Protocol)Internet 控制报文协议。它是 TCP/IP 协议族的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

#!/bin/bash

read -p "please input a ID:" id
if ping -c $id | grep -q "ttl" ;then #-c后有无空格都可
echo "success"
else
echo "failed"
fi

2.把当前目录(包含子目录)下所有后缀为“.txt”的文件后缀变更为“.h”

#!/bin/bash

for file   in `find -name *.txt`
do
mv $file ${file/%txt/h}
done

3.分行打印本机ip地址、广播地址、掩码地址

ifconfig 命令
Linux 下网卡命名规律:eth0,eth1。第一块以太网卡,第二块lo 为环回接口,它的 IP 地址固定为 127.0.0.1,掩码 8 位。它代表你的机器本身。ifconfig [Interface]查看网卡信息,Interface是可选项,如果不加此项,则显示系统中所有网卡的信息。如果添加此选项则显示所指定的网卡信息。

启用/停用网卡操作命令(需要 root 权限):
ifconfig [Interface] up 启用 Interface 网卡
ifconfig [Interface] down 停用 Interface 网卡
ifconfig [Interface] 查看 Interface 网卡当前状态

示例:

第一行:连接类型:Ethernet(以太网)HWaddr(硬件 mac 地址)
第二行:网卡的 IP 地址、子网、掩码
第三行:IPV6 的地址相关信息
第四行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500 字节
第五、六行:接收、发送数据包情况统计
第七行:接收、发送数据字节数统计信息。

#!/bin/bash

ifconfig wlan0 | grep "inet 地址:" | awk 'BEGIN{OFS="\n";} { print $2,$3,$4}'

4.编写脚本,使用case语句判断脚本的参数是否为"up/down",如果为"up"启用网卡,并输出网卡状态,如果是"down"则停用网卡,并输出网卡状态.若参数为其他,提示准确的参数

#!/bin/bash

read -p "please input up/down :" a
case $a in
up)
echo "eth0 is up"
;;
down)
echo "eth0 is down"
;;
*)
echo "failed"
;;
esac

5.统计/etc/passwd中/bin/bash出现的次数

  etc/passwd 文件中,每一行用户记录的各个数据段用“:”分隔,分别定义了用户的各方面属性。各个字段的顺序和含义如下:
注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序

#!/bin/bash

cat /etc/passwd | grep "/bin/bash" | wc -l

6.打印/etc/passwd中奇数行的行号

#!/bin/bash

cat /etc/passwd | awk '{if (NR%2==1) print NR,$0; else print $0;}'
#NR表示行号,$0表示后面的内容

7.从网上下载一个文件,保存到~下

  wget 是在 Linux 下开发的开放源代码的软件,作者是 HrvojeNiksic,后来被移植到包括 Windows 在内的各个平台上。它有以下功能和特点:

  ①支持断点下传功能;这一点,也是网络蚂蚁和 FlashGet 当年最大的卖点,现在,Wget 也可以使用此功能,那些网络不是太好的用户可以放心了;
  ②同时支持 FTP 和 HTTP 下载方式;尽管现在大部分软件可以使用 HTTP 方式下载,但是,有些时候,仍然需要使用 FTP 方式下载软件;
  ③支持代理服务器;对安全强度很高的系统而言,一般不会将自己的系统直接暴露在互联网上,所以,支持代理是下载软件必须有的功能;
  ④设置方便简单;可能,习惯图形界面的用户已经不是太习惯命令行了,但是,命令行在设置上其实有更多的优点,最少,鼠标可以少点很多次,也不要担心是否错点鼠标。

放到指定目录的用法
wget -P 指定目录 url 链接(绝对路径)

#!/bin/bash

mkdir~/download
wget -p ~/download http://upload.ldnews.cn/2014/0916/1410854723815.jpg

8.找出自己常用的5条命令以及使用次数

1.Bash shell 在“~/.bash_history”(“~/”表示用户目录)文件中保存了 500 条使用过的命令,这样可以使你输入使用过的长命
令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个“.bash_history”文件。
2.uniq 从已经排序好的文本文件 file1 中删除重复的行,输出到标注输出或file2 。常作为过滤器,配合管道使用在使用 uniq 命令前,必须确保操作的文本文件已经过 sort 排序。若不带参数运行 uniq,将删除重复的行。
uniq –c 在每行旁边显示该行重复出现的次数

#!/bin/bash

cat ~/.bash_history | sort|uniq -c | sort -nr | head -

9.找出当前目录下文件名中含有空格的文件,并将文件名中的空格去掉

#!/bin/bash

find -name "* *"|while read line
do
newfile=`echo $line | sed -e "s/ //g"` #sed -e表示后面的脚本 -e可不加
mv "$line" "$newfile" #$line和$newfile都是字符串
done

10.列出局域网内的所有活动主机

/dev/null 看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.然而, /dev/null 对命令行和脚本都非常的有用.它可以禁止标准输出和标准错误的输出.

#!/bin/bash

for i in `seq  `
do
{
ping -c2 192.168..$i &>/dev/null && echo "192.168.1.$i is alive"
}&
done
wait

11.ftp服务器上下载文件

FTP是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP 网络和INTERNET上最早使用的协议之一。尽管 World WideWeb(WWW)已经替代了FTP的大多数功能,FTP 仍然是通过 Internet把文件从客户机复制到服务器上的一种途径。FTP 客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。原来的FTP软件多是命令行操作,有了像 CUTEFTP这样的图形界面软件,使用FTP传输变得方便易学。主要使用它进行“上载”。即向服务器传输文件。由于 FTP 协议的传输速度比较快,我们在制作诸如“软件下载”这类网站时喜欢用 FTP 来实现,同时我们这种服务面向大众,不需要身份认证,即“匿名 FTP 服务器”。FTP 是应用层的协议,它基于传输层,为用户服务,它们负责进行文件的传输。FTP 是一个 8 位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像 MIME 或 Unicode 一样。但是,FTP 有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,并且不时的必需执行一些冗长的登录进程。FTP 服务一般运行在 20 和 21 两个端口。端口 20 用于在客户端和服务器之间传输数据流,而端口 21 用于传输控制流,并且是命令通向ftp 服务器的进口。当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话会被防火墙断开,传输会产生一些错误。

#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest
binary
cd /home/data
lcd /home/databackup
prompt
mget *
close
bye
! #!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest
binary
cd /home/data
lcd /home/databackup
prompt
mput *
close
bye
!

shell网络管理的更多相关文章

  1. (五)uboot移植补基础之shell

    1.shell介绍:shell是操作系统的终端命令行 (1)shell可以理解为软件系统提供给用户操作的命令行界面,可以说它是人机交互的一种方式.(2)我们可以使用shell和操作系统.uboot等软 ...

  2. 第13章 Linux的网络管理

    本文目录: 13.1 Linux数据包转发功能 13.2 和网络相关的几个文件说明 13.2.1 网卡配置文件ifcfg-* 13.2.2 DNS配置文件/etc/resolve.conf 13.2. ...

  3. Docker 网络管理及容器跨主机通信

    1.网络模式 docker支持四种网络模式,使用--net选项指定: host,--net=host,如果指定此模式,容器将不会获得一个独立的network namespace,而是和宿主机共用一个. ...

  4. Linux和Shell回炉复习系列文章总目录

    本页内容都是本人回炉Linux时整理出来的.这些文章中,绝大多数命令类内容都是翻译.整理man或info文档总结出来的,所以相对都比较完整. 本人的写作方式.风格也可能会让朋友一看就恶心到直接右上角叉 ...

  5. Ubuntu18.04的网络管理netplan和防火墙ufw

    Netplan Ubuntu18.04使用的网络管理是netplan, 配置文件在/etc/netplan/下 刚安装完成的配置是这样的 刚安装完成的配置是这样的 network: ethernets ...

  6. linux之bash shell

    GNU bash ======================================================== 通常计算机硬件是由运算器.控制器.存储器.输入/输出设备等等这些物理 ...

  7. shell 指令 摘录

    作者: learner811    本文摘自网络    权限:用户 读写 ugoa rwx * useradd userdel groupadd groupmod usermod su sudo wh ...

  8. shell编程学习1

    1.shell是操作系统的终端命令行 (1)shell可以理解为软件系统提供给用户操作的命令行界面,可以说它是人机交互的一种方式.    (2)我们可以使用shell和操作系统.uboot等软件系统进 ...

  9. Linux网络管理及基础设置

    一.网络管理 1 临时配置网络(ip,网关,dns) 用ifconfig命令设定网卡的IP地址: ens33网卡的IP地址为192.168.16.154, ifconfig ens33 192.168 ...

随机推荐

  1. 理解js的几个关键问题(2): 对象、 prototype、this等

    参考文档:http://www.cnblogs.com/ranran/archive/2014/05/19/3737217.html http://speakingjs.com/es5/ch17.ht ...

  2. Python模块学习 - openpyxl读写excel

    openpyxl模块介绍 openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读 ...

  3. Android弹幕编程设计实现的解决方案(一)

     Android弹幕编程设计实现的解决方案(一) 在现在的一些视频类网站.视频类直播网站,比如A站和B站,当视频在播放的时候,会在屏幕上出现一些滚动的字幕,这些字幕是UGC,通常是用户的评论,称之 ...

  4. 在C#代码中应用Log4Net系列教程(附源代码)地址

    在博客园看到一篇关于Log4Net使用教程,比较详细,感谢这位热心的博主 博客园地址:http://www.cnblogs.com/kissazi2/archive/2013/10/29/339359 ...

  5. POJ 1486 Sorting Slides【二分图匹配】

    题目大意:有n张幻灯片和n个数字,幻灯片放置有重叠,每个数字隶属于一个幻灯片,现在问你能够确定多少数字一定属于某个幻灯片 思路:上次刷过二分图的必须点后这题思路就显然了 做一次二分匹配后将当前匹配的边 ...

  6. 事件和委托: 第 6 页 .Net Framework中的委托与事件

    原文发布时间为:2008-11-01 -- 来源于本人的百度文章 [由搬家工具导入] .Net Framework中的委托与事件 尽管上面的范例很好地完成了我们想要完成的工作,但是我们不仅疑惑:为什么 ...

  7. redis安装【三】

    目录介绍: 0.Windows下下载安装包: 下载地址: https://redis.io/ 1.上传到linux服务器 将文件上传到192.168.2.128主机的usr/local目录下: C:\ ...

  8. Codeforces 848C (cdq分治)

    Codeforces 848C Goodbye Souvenir Problem : 给一个长度为n的序列,有q个询问.一种询问是修改某个位置的数,另一种询问是询问一段区间,对于每一种值出现的最右端点 ...

  9. poj1273最大流初破

    第一次网络流,学了一天的DINIC算法(个人比较愚),切了这个入门题,开始的时候怎么调连 测试都过不了,后来发现犯了一个低级错误!把判断条件放在for(:)!里面和放在for下面大大 不同啊!里面的话 ...

  10. HDU 5573 Binary Tree【构造】

    几天前模拟区域赛的一道题,今天发现在草稿箱里直接补个博客. 感觉这还是一道很有意思的构造题. 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5573 ...