利用DeepSeek编写批量输出多个主机的磁盘状况的脚本

原来的办法是ssh登录到某个主机IP,然后执行df -Th|grep disk,如果磁盘空间不足,就删除某些文件。但是经常要检查几十台主机的磁盘状况,这种人工方法很乏味,也很费时。
了解到ssh命令是可以跟远程命令的, 即ssh root@ip df ..,这样就无需登录到每台主机,直接在某台能用ssh连接所有主机的机器ops上执行即可。
先把所有要查看的主机IP列表以1行1个IP的格式保存在iplist文件中。
然后编辑以下脚本。

#!/bin/bash

# 检查iplist文件是否存在
if [ ! -f "iplist" ]; then
    echo "错误:iplist文件不存在!"
    exit 1
fi

# 逐行读取iplist文件中的IP地址
while read -r ip; do
    # 跳过空行和以#开头的注释行
    if [[ -z "$ip" || "$ip" == \#* ]]; then
        continue
    fi
    
    echo "正在连接 $ip ..."
    ssh "root@$ip" "df -Th|grep disk"
    
    # 检查ssh命令是否成功执行
    if [ $? -ne 0 ]; then
        echo "连接到 $ip 失败!"
    fi
    
    echo "----------------------------------------"
done < "iplist"

在ops上输入bash check_disk.sh,结果只检查了一台,输出:

正在连接 192.168.1.1 ...
/dev/sdg1      ext4      5.5T  3.2T  5.5T   61% /disk6
/dev/sdf1      ext4      5.5T  4.1T  5.5T   81% /disk5
----------------------------------------

然后就退出了。

既然循环ssh有问题,何不把这些ssh命令输出到一个脚本文件,然后执行脚本即可。
所以将check_disk.sh修改如下:

#!/bin/bash

# 检查iplist文件是否存在
if [ ! -f "iplist" ]; then
    echo "错误:iplist文件不存在!"
    exit 1
fi

# 逐行读取iplist文件中的IP地址
while read -r ip; do
    # 跳过空行和以#开头的注释行
    if [[ -z "$ip" || "$ip" == \#* ]]; then
        continue
    fi
    
    echo "echo" '"#正在连接 ' "$ip" '  ..."'
    echo "ssh" "root@$ip" "df -Th|grep disk"

    
    # 检查ssh命令是否成功执行
    if [ $? -ne 0 ]; then
        echo "连接到 $ip 失败!"
    fi

    echo "echo" '"#----------------------------------------"'
done < "iplist"

注意:echo命令后面先跟一个双引号包裹的echo,然后用单引号包裹双引号,这样才能输出双引号,变量ip需要单独放在一对双引号中,不能用单引号包裹。
然后在ops上输入bash check_disk.sh >chsh.sh
得到的chsh.sh的内容如下:

echo "#正在连接  192.168.1.1   ..."
ssh root@192.168.1.1 df -Th|grep disk
echo "#----------------------------------------"

echo "#正在连接  192.168.1.2   ..."
ssh root@192.168.1.2 df -Th|grep disk
echo "#----------------------------------------"
...

再执行bash chsh.sh就好了,输出如下:

#正在连接  192.168.1.1   ...
/dev/sdg1      ext4      5.5T  2.1G  5.5T   1% /disk6
/dev/sdi1      ext4      5.5T  3.2G  5.5T   1% /disk8
#----------------------------------------
#正在连接  192.168.1.2   ...
/dev/sdi1      ext4      5.5T  1.9G  5.5T   1% /disk8
/dev/sdj1      ext4      5.5T  2.5G  5.5T   1% /disk9
...
#正在连接  192.168.1.88   ...
/dev/sdc1      ext4      5.5T   89M  5.5T   1% /disk2
/dev/sdf1      ext4      5.5T   89M  5.5T   1% /disk5

当然,查看结果也可以用重定向到文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值