【发布时间】:2017-02-04 08:16:14
【问题描述】:
所以我有一个长度为 n 的服务器列表。我需要打开一个连接并编辑一个文件并关闭它。
这是我目前拥有的:
#!/bin/bash
server_list=(a b c d)
for i in "${server[@]}"; do ssh "${server[@]}"; cd /etc; cp file file.bak; perl -pi -i 's/find/replace/g' file; exit; done
我唯一的问题是我无法退出 ssh 连接并转到数组中的下一个。我使用了-n、-t 和-T 选项无济于事。
谢谢。
【问题讨论】:
-
您是否可以在远程机器上没有备份,在本地执行全局替换,只需执行
scp file "${server[@]}/etc/" -
这里要理解的重要一点是
ssh "${server[@]}"是与cd /etc不同的一个不同的命令,并且由于您的代码当前是编写的,cd /etc不会是运行直到ssh "${server[@]}"退出。