对多个主机具有不同参数的 PSSH 命令
PSSH command with different arguments to multiple hosts
我正在尝试使用 PSSH 编写一个 bash 脚本,它根据主机发送相同的命令但不同的参数。主机名和参数将从不同的文件 'list.txt'.
中提取
'list.txt' 文件的示例如下所示:
10.0.0.1;'hello';'world'
10.0.0.2;'goodbye';'everyone'
10.0.0.3;'thank';'you!'
下面显示了我目前拥有的(但不幸的是没有用)的示例:
#!/bin/bash
# grab the list items and make them into a variable to be able to parse
actionList=$(</root/scripts/list.txt)
# parse out host name for pssh
host_name="$( cut -d ';' -sf 1 <<< "$actionList" )";
# parse out the first argument
argument1="$( cut -d ';' -sf 2 <<< "$actionList" )";
# parse out the second argument
argument2="$( cut -d ';' -sf 3 <<< "$actionList" )";
# pssh command that creates a new file on each server with their respective argument1 and argument2
pssh -i -AH $host_name -t 300 -O StrictHostKeyChecking=no "$(argument1) ' and ' $(argument2) >> arg1_and_arg2.txt"
我很确定削减 $actionList 变量并没有给我我想要的东西,但我真正坚持的是 pssh 命令是否会 运行 对 [=26] 中的每个项目正确=] 在我从 $actionList.
中解析出正确的字符串之后
有没有办法使相同的命令,改变文件中的参数与 PSSH 一起工作?有没有更好的程序来做到这一点?如果是这样怎么办?感谢任何帮助。
谢谢!
P.S。如果我对这个 post 进行了格式化或做错了什么,我深表歉意。 Whosebug 通常是我最后的选择,所以我不经常使用它。再次感谢任何 help/advice!
我认为你最好只使用一个为输入文件的每一行运行 ssh
的循环。
while IFS=";" read host arg1 arg2; do
echo "$arg1 and $arg2" | ssh "$host" "cat > arg1_and_arg2.txt" &
done < list.txt
我正在尝试使用 PSSH 编写一个 bash 脚本,它根据主机发送相同的命令但不同的参数。主机名和参数将从不同的文件 'list.txt'.
中提取'list.txt' 文件的示例如下所示:
10.0.0.1;'hello';'world'
10.0.0.2;'goodbye';'everyone'
10.0.0.3;'thank';'you!'
下面显示了我目前拥有的(但不幸的是没有用)的示例:
#!/bin/bash
# grab the list items and make them into a variable to be able to parse
actionList=$(</root/scripts/list.txt)
# parse out host name for pssh
host_name="$( cut -d ';' -sf 1 <<< "$actionList" )";
# parse out the first argument
argument1="$( cut -d ';' -sf 2 <<< "$actionList" )";
# parse out the second argument
argument2="$( cut -d ';' -sf 3 <<< "$actionList" )";
# pssh command that creates a new file on each server with their respective argument1 and argument2
pssh -i -AH $host_name -t 300 -O StrictHostKeyChecking=no "$(argument1) ' and ' $(argument2) >> arg1_and_arg2.txt"
我很确定削减 $actionList 变量并没有给我我想要的东西,但我真正坚持的是 pssh 命令是否会 运行 对 [=26] 中的每个项目正确=] 在我从 $actionList.
中解析出正确的字符串之后有没有办法使相同的命令,改变文件中的参数与 PSSH 一起工作?有没有更好的程序来做到这一点?如果是这样怎么办?感谢任何帮助。
谢谢!
P.S。如果我对这个 post 进行了格式化或做错了什么,我深表歉意。 Whosebug 通常是我最后的选择,所以我不经常使用它。再次感谢任何 help/advice!
我认为你最好只使用一个为输入文件的每一行运行 ssh
的循环。
while IFS=";" read host arg1 arg2; do
echo "$arg1 and $arg2" | ssh "$host" "cat > arg1_and_arg2.txt" &
done < list.txt