This question already has an answer here:
Executing ssh command in a bash shell script within a loop [duplicate]

(1个答案)


6年前关闭。




如果我执行以下操作
tr -cd 'a-z' < /dev/urandom | fold -w10 | head -n40 > pw
for f in $(seq -w 40); do echo linux$f.example.com;done > hosts

while read -r x && read -r y <&3; do ssh $x -l root echo $y;done <hosts 3<pw

然后循环在第一次迭代后停止,但是如果我插入echo(这不是我想要的),那么它将循环遍历所有40个。
while read -r x && read -r y <&3; do echo ssh $x -l root echo $y;done <hosts 3<pw

问题

如何使它执行所有40次迭代,而无需先创建临时文件?

最佳答案

似乎ssh正在查看并耗尽您的fds。

运行时将fds关闭到ssh

关于linux - 为什么在第一次迭代后停止该过程? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25576907/

10-15 05:23