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

举报
互联网老辛 发表于 2021/11/13 00:07:11 2021/11/13
【摘要】 脚本一: 在公司里有一个网段是 192.168.3.0的网段,现在想判断一下哪些主机在线,哪些主机不在线。 shell脚本解决方案: 方法一: 思路 首先要循环目标主机的IP地址,IP地址分为两...

脚本一:

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

shell脚本解决方案:

方法一:

思路

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

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

IP=${str}${num}

  
 
  • 1

#!/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脚本其实没有那么难,日常学习中,多多练习就好了。

文章来源: zmedu.blog.csdn.net,作者:互联网老辛,版权归原作者所有,如需转载,请联系作者。

原文链接:zmedu.blog.csdn.net/article/details/121274590

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。