-1

我正在尝试在许多远程客户端上自动安装 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

谢谢

4

1 回答 1

0

您的代码中有一些错误。

#!/bin/bash

while read f; do
   ssh-copy-id myusername"$f"
   ssh myusername@"$f" '
     :
    ' </dev/null

   ssh myusername@master.icinga.test.com icinga2 pki ticket --cn "$f" </dev/null |
   ssh myusername@"$f" '
      PKI=$(cat)
      icinga2 node wizard <<________EOF
Y

master.icinga.test.com
Y
10.20.20.1
N
Y
$PKI


Y
Y


N
N
________EOF
        '
   scp ./zones.conf myusername@"$f":/etc/icinga2/zones.conf
done < linux-list.txt

你会特别注意到最后一个ssh需要在单引号内运行的所有代码。它在其标准输入上接收票证,并用于$(cat)直接将其捕获到变量中。此外,here 文档中的空行在输入到icinga2.

正如您之前的问题中已经建议的那样,您可能应该使用icinga2 node setup而不是node wizard在脚本中。

于 2018-07-27T21:40:11.453 回答