在多台机器上远程 ls

fsp*_*rle 6 bash ssh shell-script

我想连接到文件中指定的多台机器并在那里执行“ls”。

这就是我想出的:

for machine in $(cat machines)
do
   echo "Connecting to " $machine
   ssh $machine ls -la && exit
done
Run Code Online (Sandbox Code Playgroud)

除了我需要在 'ls' 之前'cd' 到不同目录这一事实之外,循环在文件中的第一个条目之后结束。第一个条目是我的机器本身,如果这很重要的话。

我错过了什么?

Flu*_*lup 9

你的问题在这里:

ssh $machine ls -la && exit
Run Code Online (Sandbox Code Playgroud)

您的脚本ssh到运行您的ls. ssh成功退出,&&看到这一点并运行下一个命令,即exit,因此您的脚本退出!

你根本不需要&& exit。当ls完成时,连接将关闭,ssh将完成。只要去掉那一点,你就会变成金色的。