- 作者:老汪软件技巧
- 发表时间:2024-12-01 00:05
- 浏览量:
前言
这是Linux自动化运维系列的第一篇文章,主要记录相关运维项目的代码以及脚本内容分析。
温馨提示:早期关注我的朋友应该知道,我目前是在教别人计算机,所以整体文章风格会偏校园,和企业实操会有一定差距。在掘金写文某种程度上说也是在备课。
如何理解自动化运维?
因此:
入门练手项目:检测特定主机集群是否为活跃状态指定主机集群
ip_list="xx.xx.xx.xx xx.xx.xx.xx xx.xx.xx.xx"
其中xx.xx.xx.xx均为ip地址
遍历ip列表并执行ping操作
for ip in $ip_list
do
for count in {1..3}
do
ping -c1 -w1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip ping is ok."
break
else
echo $$ip ping failed:$count"
fail_count[$count]=$ip
fi
done
...
done
其中:
为什么要写成两层for循环,而不写成ping -c3 -w1?
因为虽然使用ping -c3 -w1理论上是尝试向目标 IP 地址或主机名发送 3 个 ICMP 回显请求数据包,但实际上该命令可能不会如期望那样工作。
因为-w1参数是针对整个ping操作的,而不是针对每个数据包。 例如,如果第一个数据包发送后没有在 1 秒内收到响应,ping命令可能会提前结束,而不会发送全部 3 个数据包。这可能会导致测试结果不准确(其是在网络延迟较高或者目标主机响应较慢的情况下)。
>/dev/null:表示重定向到空,即丢弃ping命令执行过程中产生的输出信息,其在屏幕上显示
$? -eq 0:
通过ping数量确认ip不通
注:该代码同在第一个for循环下
if [ ${fail_count[*]} -eq 3 ];then
echo "${fail_count[1]} ping failed"
unset fail_count[*]
fi
总结
本文通过一个简单而具体的脚本案例,引入了Linux自动化运维的概念思想,并穿插讲解了Linux Shell的基本用法,希望能让读者们也有所收获!