【发布时间】:2018-07-27 20:03:06
【问题描述】:
我正在尝试在许多远程客户端上自动安装 Icinga2。 PKI 令牌将在 Icinga 服务器上生成,并且每个客户端都不同 - 然后它应该被发送到每个客户端。 作为客户端安装的一部分,icinga2 节点向导将运行,我想将一系列输入通过管道传递到如下提示。你能检查一下我是否正确使用了heredoc吗?
#!/bin/bash
while read f; do
ssh-copy-id myusername"$f"
ssh myusername@"$f" '
yum install -y epel-release
wget --no-check-certificate https://packages.icinga.org/epel/7/release/noarch/icinga-rpm-release-7-1.el7.centos.noarch.rpm
yum install icinga-rpm-release-7-1.el7.centos.noarch.rpm
yum install -y icinga2 nagios-plugins-all
chown -R icinga:icinga /etc/icinga2 /var/lib/icinga2 /var/log/icinga2' </dev/null
ssh myusername@master.icinga.test.com icinga2 pki ticket --cn "$f" |
ssh myusername@"$f" 'cat >/tmp/pkicode'
PKI= echo $/tmp/pkicode
icinga2 node wizard << EOF
Y
Enter
master.icinga.test.com
Y
10.20.20.1
N
Y
$PKI
Enter
Enter
Y
Y
Enter
Enter
N
N
EOF
scp ./zones.conf myusername@"$f":/etc/icinga2/zones.conf
done < linux-list.txt
谢谢
【问题讨论】:
-
<<EOF要求EOF左对齐,而不是缩进。 -
顺便说一句,您可能希望在标准输入以外的 FD 上阅读您的
linux-list.txt,以避免在每个可能消耗其部分内容的进程上都需要</dev/null。例如5<linux-list.txt,然后是while read -r f <&5; do。 -
除此之外,这个问题有点过于宽泛了——一个理想的 StackOverflow 问题只关注一个单一的、特定的问题,并用最短的minimal reproducible example 重现它; “这是我的代码,看起来可能有什么问题?”,如果没有特定的不当行为或努力修剪到最短的复制器,很难建立一个规范的答案。
-
FWIW 这个长线程中的上一个问题是stackoverflow.com/questions/51544500/…