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 失败,则输出失败日志。
相关推荐
q***046315 分钟前
Linux环境下Tomcat的安装与配置详细指南
linux·运维·tomcat
好奇的菜鸟27 分钟前
在 WSL 中安装 Docker
运维·docker·容器
x***44011 小时前
linux 设置tomcat开机启动
linux·运维·tomcat
2301_804947581 小时前
nginx的https的搭建
运维·nginx·https
K***43061 小时前
httpslocalhostindex 配置的nginx,一刷新就报404了
运维·nginx
于齐龙1 小时前
服务器常见问题-FAQ
服务器
正在努力的小河1 小时前
Linux 块设备驱动实验
linux·运维·服务器
h***67372 小时前
Prometheus(普罗米修斯)----- Nginx监控
运维·nginx·prometheus
颜颜yan_2 小时前
基于CANN多Stream异步执行的智能推理管道:突破传统串行瓶颈
运维·架构·stream·昇腾·cann
wadesir2 小时前
Nginx配置文件CPU优化(从零开始提升Web服务器性能)
服务器·前端·nginx