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 失败,则输出失败日志。
相关推荐
mounter6254 小时前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器
zhengqweasd4 小时前
机房托管服务器怎么选硬盘,机械盘和 SSD 托管场景差异
运维·服务器·github
xh didida5 小时前
Linux -- 基础IO
linux·服务器·开发语言·c++
心易行者6 小时前
Agent应用+API端点商业化进阶实战:从单体智能体到可付费调用的API全流程
运维·服务器·人工智能·python·apache
科技研学社6 小时前
精度决胜品质:羽绒服缝制工艺标准与自动化精度对标解析
运维·自动化
夜之眷属6 小时前
Core dump 崩溃排查:JVM 宕机后,那份 core 文件怎么用 gdb 还原现场
java·运维·服务器·jvm
Initialize293086 小时前
Redis 内存打满、连接数飙红?运维排查四步法
运维
zly35006 小时前
centos7 mount设备挂载 /dev/sda1/硬盘挂载
linux·运维·服务器
零基础1236 小时前
FinalShell 使用教程:从安装到高效运维
运维·经验分享·笔记·finalshell