今日小练题目📢
写一个监控网卡的脚本
1)每10分钟检测一次网卡ens33的流量
2)如果流量为0,则重启网卡
优秀作业🤌🏻
#!/bin/bash
#author:xYLiuuuuuu
#date:2024-12-29
LANG=en
if ! which sar &>/dev/null
then
echo "没有sar命令,使用apt安装"
apt install sysstat &> /dev/null || (echo "sar命令无法安装";exit 1)
fi
sar -n DEV 1 60 |grep ens33 > /tmp/ens33.log
n1=`grep -i average /tmp/ens33.log |awk '{print $5}'|sed 's/\.//g'`
n2=`grep -i average /tmp/ens33.log |awk '{print $6}'|sed 's/\.//g'`
rm -f /tmp/ens33.log
if [ $n1 == "000" ] && [ $n2 == "000" ]
then
echo "网卡ens33有问题,需要重启网卡"
ifdown ens33 && ifup ens33
fi
敲黑板📝
- 以防万一匹配不到英文关键字,所以在脚本一开头设定语言为en。
- sar命令无法安装的情况也要给出提示,而且要exit 1退出脚本。
- sar命令是一个非常全面的分析工具,可以比较瑞士军刀,对文件的读写,系统调用的使用情况,磁盘IO,CPU相关使用情况,内存使用情况,进程活动等都可以进行有效的分析。
sar -u #统计CPU的使用情况,每间隔1秒钟统计一次总共统计三次
[root@lgh ~]# sar -u 1 3
Linux 2.6.32-696.el6.x86_64 (lgh) 10/06/2019 _x86_64_ (32 CPU)
09:42:45 PM CPU %user %nice %system %iowait %steal %idle
09:42:46 PM all 0.00 0.00 0.00 0.00 0.00 100.00
09:42:47 PM all 0.03 0.00 0.03 0.00 0.00 99.94
09:42:48 PM all 0.03 0.00 0.03 0.00 0.00 99.94
Average: all 0.02 0.00 0.02 0.00 0.00 99.96
sar -q #查看平均负载:其中每间隔1秒钟统计一次总共统计三次
[root@lgh ~]# sar -q 1 3
Linux 2.6.32-696.el6.x86_64 (lgh) 10/06/2019 _x86_64_ (32 CPU)
09:58:39 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
09:58:40 PM 0 1535 0.00 0.03 0.00
09:58:41 PM 0 1535 0.00 0.03 0.00
09:58:42 PM 0 1535 0.00 0.03 0.00
Average: 0 1535 0.00 0.03 0.00
sar -r #查看内存使用情况,每间隔1秒钟统计一次总共统计三次
[root@lgh ~]# sar -r 1 3
Linux 2.6.32-696.el6.x86_64 (lgh) 10/06/2019 _x86_64_ (32 CPU)
10:01:15 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
10:01:16 PM 233550984 30597240 11.58 758212 20745900 14822388 5.44
10:01:17 PM 233550836 30597388 11.58 758212 20745900 14822388 5.44
10:01:18 PM 233551972 30596252 11.58 758212 20745900 14822388 5.44
Average: 233551264 30596960 11.58 758212 20745900 14822388 5.44
sar -n #统计网络信息
sar -n选项使用6个不同的开关:DEV,EDEV,NFS,NFSD,SOCK,IP,EIP,ICMP,EICMP,TCP,ETCP,UDP,SOCK6,IP6,EIP6,ICMP6,EICMP6和UDP6 ,DEV显示网络接口信息,EDEV显示关于网络错误的统计数据,NFS统计活动的NFS客户端的信息,NFSD统计NFS服务器的信息,SOCK显示套接字信息,ALL显示所有5个开关。它们可以单独或者一起使用。
1.10.1:sar -n DEV 1 1: 每间隔1秒统计一次,总计统计1次,下面的average是在多次统计后的平均值
#IFACE 本地网卡接口的名称
#rxpck/s 每秒钟接受的数据包
#txpck/s 每秒钟发送的数据库
#rxKB/S 每秒钟接受的数据包大小,单位为KB
#txKB/S 每秒钟发送的数据包大小,单位为KB
#rxcmp/s 每秒钟接受的压缩数据包
#txcmp/s 每秒钟发送的压缩包
#rxmcst/s 每秒钟接收的多播数据包
[root@lgh ~]# sar -n DEV 1 1
Linux 2.6.32-696.el6.x86_64 (lgh) 10/06/2019 _x86_64_ (32 CPU)
10:13:52 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
10:13:53 PM lo 16.00 16.00 1.86 1.86 0.00 0.00 0.00
10:13:53 PM eth0 132.00 25.00 14.28 2.34 0.00 0.00 0.00
10:13:53 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:13:53 PM eth2 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:13:53 PM eth3 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: lo 16.00 16.00 1.86 1.86 0.00 0.00 0.00
Average: eth0 132.00 25.00 14.28 2.34 0.00 0.00 0.00
Average: eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth2 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth3 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- 使用临时文件可以给我们带来很大便利,但不要忘记在脚本结束时删除。
- 用 if which xxx 来判断某个命令在不在。
- 使用 || 或者 && 时,可以用()将多条命令作为一个整体。
- ifdown 命令用来停用系统上指定的网卡,而 ifup 命令用来启动系统上指定的网卡。