gpt4 book ai didi

bash - 使用xargs ssh到多台主机,收到:Name or service not known

转载 作者:行者123 更新时间:2023-11-29 09:13:56 25 4
gpt4 key购买 nike

我正在编写一个 shell 脚本,它将通过 ssh 连接到多个主机,并对它们执行一些操作。

我的脚本 test.sh 如下所示:

cat < $1 | xargs -e -d ' ' -I % ssh % grep "example" /opt/example/test.log

我通过以下命令运行它

./test.sh prod_hosts.txt

和 prod_hosts.txt 的内容:

hostname1 hostname2 hostname3 hostname4

我已确认此文件末尾没有回车,但我收到以下错误:

[ryan@hostname1 ~]$ ./test.sh prod_hosts.txt
ssh: hostname4
: Name or service not known
xargs: ssh: exited with status 255; aborting

看起来它成功地通过 ssh 连接到 4 台主机,但随后有一个空白条目试图通过 ssh 连接,因此出现错误。

知道我在这里缺少什么吗?似乎我遗漏了一些明显的东西!

最佳答案

echo '1 2' | xargs -d ' ' -I % echo % 产生:

1
2
<blank line>

鉴于echo -n '1 2' | xargs -d ' ' -I % echo % 返回:

1
2

xargs如果输入字符串以换行符结束,则决定再生成一个输出条目。

解决方法:

  1. 在 hosts.txt 中使用换行符分隔的条目和:<hosts.txt xargs -I % <ssh-command>
  2. 如果无法更改 hosts.txt:< <(tr ' ' '\n' < hosts.txt) xargs -I % <ssh-command>

关于bash - 使用xargs ssh到多台主机,收到:Name or service not known,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31592855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com