根据不同的参数,以多台主机PSSH命令

问题描述 投票:0回答:1

我想写使用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命令将在“LIST.TXT”正确运行的每个项目我已经分析出后,从$的ActionList正确的字符串。

有没有一种方法,使相同的命令,改变参数从档案工作与PSSH?有没有更好的方案有这样做吗?如果是的话怎么样?任何帮助表示赞赏。

谢谢!

附:如果我格式化或做了什么不对的这个帖子,我道歉。 StackOverflow的通常是我的最后一招,所以我不经常使用它。再次,感谢所有帮助/咨询!

bash scripting parameter-passing pssh
1个回答
1
投票

我想你最好只使用运行ssh输入文件的每一行的循环。

while IFS=";" read host arg1 arg2; do
    echo "$arg1 and $arg2" | ssh "$host" "cat > arg1_and_arg2.txt" &
done < list.txt
© www.soinside.com 2019 - 2024. All rights reserved.