当前位置: 首页 > news >正文

利用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" ]; thenecho "错误:iplist文件不存在!"exit 1
fi# 逐行读取iplist文件中的IP地址
while read -r ip; do# 跳过空行和以#开头的注释行if [[ -z "$ip" || "$ip" == \#* ]]; thencontinuefiecho "正在连接 $ip ..."ssh "root@$ip" "df -Th|grep disk"# 检查ssh命令是否成功执行if [ $? -ne 0 ]; thenecho "连接到 $ip 失败!"fiecho "----------------------------------------"
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" ]; thenecho "错误:iplist文件不存在!"exit 1
fi# 逐行读取iplist文件中的IP地址
while read -r ip; do# 跳过空行和以#开头的注释行if [[ -z "$ip" || "$ip" == \#* ]]; thencontinuefiecho "echo" '"#正在连接 ' "$ip" '  ..."'echo "ssh" "root@$ip" "df -Th|grep disk"# 检查ssh命令是否成功执行if [ $? -ne 0 ]; thenecho "连接到 $ip 失败!"fiecho "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

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

http://www.dtcms.com/a/291509.html

相关文章:

  • 携“养鲜”魔法赴中卫,容声冰箱让石头缝里的鲜甜走得更远
  • 前端之学习后端java小白(一)之SDKMAN及helloword
  • EcoVadis评估:为企业带来的多重价值与竞争优势
  • QT跨平台应用程序开发框架(11)—— Qt系统相关
  • STM32F1使用volatile关键字避免内存优化
  • 基于springboot+vue开发的图书馆座位预约系统【源码+sql+可运行】【50721
  • 在安卓开发中,多次点击启动 Service 会有什么问题?
  • 关键成功因素法(CSF)深度解析:从战略目标到数据字典
  • 后训练(Post-training)语言模型
  • NuGet02-包制作及管理
  • 本地部署Nacos开源服务平台,并简单操作实现外部访问,Windows 版本
  • Oracle数据库索引性能机制深度解析:从数据结构到企业实践的系统性知识体系
  • 【python数据结构算法篇】python数据结构
  • 数据库的介绍和安装
  • Qualcomm Linux 蓝牙指南学习--验证 Fluoride 协议栈的功能(2)
  • day59-可观测性建设-zabbix自定义监控项
  • Shell 脚本编程全面学习指南
  • AK视频下载工具:免费高效,多平台支持
  • 解决图片方向混乱问题的自动化处理方案
  • 51c大模型~合集157
  • 《基于单层软皮和高密度电阻抗层析成像的多模态信息结构》论文解读
  • Python图像处理基础(十)
  • 十六、全方位监控:Prometheus
  • doker centos7安装1
  • QGIS本地下载并部署天地图
  • Java——MyBatis 核心特性全解析:从配置到高级用法
  • Python桌面版数独游戏(三版)-增加难易度模式
  • 深入解析:GRPO决策优化与动态规划在先进RAG系统中的应用
  • Markdown语法完全指南:从入门到精通
  • MySQL 8.0 OCP 1Z0-908 题目解析(32)