Linux运维面试中常被问到的两个shell脚本

网友投稿 866 2022-05-28

脚本一:

在公司里有一个网段是 192.168.3.0的网段,现在想判断一下哪些主机在线,哪些主机不在线。

shell脚本解决方案

方法一:

首先要循环目标主机的IP地址,IP地址分为两部分:

str=192.168.3.

num=1-255的自然数,所以num需要先遍历,然后与str拼接

IP=${str}${num}

1

Linux运维面试中常被问到的两个shell脚本

#!/bin/bash #定义变量str str="192.168.31." # for循环遍历num #num是1-255的自然数,可以使用{1..255} for num in {1..255} do ip=${str}${num} if ping -c1 -w1 ${ip} &>/dev/null;then #如果可以ping通则提示 ip在线 echo "$ip is online." else # 如果ping不通,提示主机不在线 echo "$ip is offline" fi done

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

ping命令后面有两个参数,一个是 -c,一个是-w

-c count 指定要被发送(或接收)的回送信号请求的数目,由 Count 变量指出

-w timeout 这个选项仅和 -c 选项一起才能起作用。它使 ping 命令以最长的超时时间去等待应答(发送最后一个信息包后)

方法二:

前面的和方法一一样,到了ping命令之后,要判断是否在线的时候,除了方法一,还可以判断 echo $?

如果 $?结果为0 ,则表示能ping通,也就是ip在线,否则为不在线。

#!/bin/bash str="192.168.1." for num in {1..255} do ip=${str}${num} ping -c1 -w1 ${ip} &>/dev/null #在这里定义NUM为$? ,如果执行成功则$?=0,如果ping不通则不为零 NUM=$? if [ $NUM -eq 0 ];then echo "$ip is online." else echo "$ip is offline" fi done

1

2

3

4

5

6

7

8

9

10

11

12

13

14

方法三

表示1-255的方式,出了{1.。255} 之外,还可以用seq 1 254

[root@laoxin-06 ~]# cat ping.sh #!/bin/bash str="192.168.31." # seq 1 254 for num in `seq 1 254` do ip=${str}${num} ping -c1 -w1 ${ip} &>/dev/null NUM=$? if [ $NUM -eq 0 ];then echo "$ip is online" else echo "$ip is offline" fi done

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

脚本二:

我们去面试经常被问到磁盘使用率,我们可以写一个脚本来判断磁盘的使用率

#!/bin/bash # 截取IP ## 截取IP有多种方法 IP=`ifconfig eth0 |awk -F " " 'NR==2{print $2}'` # 定义使用率,并转换为数字 SPACE=`df -Ph |awk '{print int($5)}'` for i in $SPACE do #如果遍历的数值大于90,我们就认为磁盘使用率超过了90%,然后告警 if [ $i -ge 90 ] then echo "$IP的磁盘使用率已经超过了90%,请及时处理" fi done

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

当然IP的截取方法有很多种,这里用了相对比较简单的一种

总结

shell脚本其实没有那么难,日常学习中,多多练习就好了。

Linux Shell 运维

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:助力万物互联年底小故事(1)
下一篇:数据结构与算法—递归算法(从阶乘、斐波那契到汉诺塔的递归图解)
相关文章