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 失败,则输出失败日志。
相关推荐
modelmd5 分钟前
Docker 重命名数据卷
运维·docker·容器
Skilce7 分钟前
K8S部署
linux·运维·服务器·容器·kubernetes
程序员老邢7 分钟前
【技术底稿 12】内网统一日志系统 Loki + Promtail 全流程部署(对接 Grafana,监控日志一体化)
java·运维·程序人生·grafana·devops
灰暗世界%14 分钟前
飞牛nas如何设置阿里云的DDNS
服务器·网络·阿里云
不爱吃糖的程序媛15 分钟前
鸿蒙三方库适配读懂 `HPKBUILD`:lycium 怎么知道「下载谁、怎么编、装到哪」?
服务器·华为·harmonyos
d1z88818 分钟前
(十七)32天GPU测试从入门到精通-vLLM 部署与性能测试day15
服务器·显卡·nvidia·vllm
重生的黑客20 分钟前
Linux :vim 深入与 gcc 编译详解
linux·运维·vim
南境十里·墨染春水44 分钟前
linux学习进展 进程
linux·运维·学习
cyber_两只龙宝1 小时前
【Oracle】Oracle之DQL中SELECT的基础使用
linux·运维·服务器·数据库·云原生·oracle
Deitymoon1 小时前
linux——TCP多进程并发服务器
linux·服务器·tcp/ip