Linux运维面试中常被问到的两个shell脚本
Posted 互联网老辛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux运维面试中常被问到的两个shell脚本相关的知识,希望对你有一定的参考价值。
脚本一:
在公司里有一个网段是 192.168.3.0的网段,现在想判断一下哪些主机在线,哪些主机不在线。
shell脚本解决方案:
方法一:
思路
首先要循环目标主机的IP地址,IP地址分为两部分:
str=192.168.3.
num=1-255的自然数,所以num需要先遍历,然后与str拼接
IP=$str$num
#!/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
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-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
脚本二:
我们去面试经常被问到磁盘使用率,我们可以写一个脚本来判断磁盘的使用率
#!/bin/bash
# 截取IP
## 截取IP有多种方法
IP=`ifconfig eth0 |awk -F " " 'NR==2print $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
当然IP的截取方法有很多种,这里用了相对比较简单的一种
总结
shell脚本其实没有那么难,日常学习中,多多练习就好了。
以上是关于Linux运维面试中常被问到的两个shell脚本的主要内容,如果未能解决你的问题,请参考以下文章