Ssh 到多个主机和基于主机名的 运行 命令

Ssh to multiple hosts and run command based on hostnames

我正在尝试通过 ssh 连接到多个服务器并创建一个新文件夹,该文件夹的名称是我正在 ssh-ing 的主机名。

我正在使用以下 ksh 脚本:

#!/usr/bin/ksh
for i in `cat `
do
ssh $i "sudo mkdir $i"
done

当 运行 ./myscript hostnameList

时,这会大喊 Usage: mkdir [-p] [-e] [-m mode] Directory ...

我很确定这与 $i 变量有关,但不确定如何使用它。

我认为它在 for 循环中缺少一个 do

试一试:

#!/usr/bin/ksh
for i in `cat `; do
    ssh $i "sudo mkdir $i"
done

https://www.cyberciti.biz/faq/ksh-for-loop/

还要确保使用双引号,如您的示例所示。