• 作者:老汪软件技巧
  • 发表时间: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的基本用法,希望能让读者们也有所收获!