shell逐行读取文件 & 远程操作服务器

代码示例

bash 复制代码
while read ip; 
    do
        echo "uninstalling test programs in $line"        
        ssh root@$ip 'bash -s' < remote_remove_tool.sh
    done < installed_ips

总结

✅ 作用:

  • 逐行读取 installed_ips 文件中的 IP 地址
  • 通过 SSH 连接到远程服务器,执行 remote_remove_tool.sh 脚本
  • 用于批量卸载多个服务器上的测试程序

✅ 优化建议:

  • 使用 & 并行执行,提高速度
  • 检查 installed_ips 是否存在,避免脚本报错
  • 增加 SSH 连接超时判断,防止连接卡住

1. 并行执行,提高效率

bash 复制代码
while read line; do
    echo "uninstalling test programs in $line"
    ssh root@$line 'bash -s' < remote_remove_tool.sh &
done < installed_ips
wait
  • & 让 ssh 命令在后台运行,多个 SSH 任务可以并行执行。
  • wait 让脚本等待所有后台任务完成。

2. 检查 installed_ips 是否存在,避免报错

bash 复制代码
if [ ! -f installed_ips ]; then
    echo "Error: installed_ips 文件不存在"
    exit 1
fi

3. 检查 SSH 连接是否成功

bash 复制代码
while read line; do
    echo "uninstalling test programs in $line"
    ssh -o ConnectTimeout=5 root@$line 'bash -s' < remote_remove_tool.sh || echo "Failed to connect: $line"
done < installed_ips
  • -o ConnectTimeout=5 限制 SSH 连接超时为 5 秒,避免卡死。
  • || echo "Failed to connect: $line" 如果 SSH 失败,则输出失败日志。
相关推荐
隔窗听雨眠23 分钟前
Nginx网关响应慢排查手记
java·服务器·nginx
人还是要有梦想的1 小时前
linux下用搜狗输入法,中英文切换
linux·运维·服务器
北京智和信通1 小时前
某部队IT基础设施及机房动环统一运维建设实例
运维·网管平台·网管软件·网络管理系统·网络运维平台·网络运维系统
乐维_lwops1 小时前
从 “救火运维” 到 “自动驾驶”:运维智能体到底解决了什么?
运维·人工智能·运维智能体
bush41 小时前
嵌入式linux学习记录二
linux·运维·学习
9分钟带帽1 小时前
linux_通过NFS挂载远程服务器的硬盘
linux·服务器
weixin_468466851 小时前
MoneyPrinterTurbo 短视频自动化生产实战指南
运维·人工智能·自动化·大模型·音视频·moneyprinter
難釋懷2 小时前
Nginx自签名-图形化工具 XCA
运维·nginx
迷枫7123 小时前
DM8 目录结构与常用排查入口梳理
服务器·数据库
志栋智能4 小时前
小步快跑:从单一场景开启超自动化巡检之旅
运维·网络·人工智能·自动化