自动将命令的输出输入提示

时间:2018-07-26 17:30:15

标签: bash icinga icinga2

我有一个脚本可以读取文本文件,其中列出了所有节点:

node1
node2
node3
.
.
.

这是我的脚本:

#!/bin/bash

while read f; do
   ssh-copy-id myusername@"$f"
   ssh username@master.icinga.test.com
   icinga2 pki ticket --cn '$f' 
done < linux-list.txt

while read f; do
   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'
   scp ./zones.conf myusername@"$f":/etc/icinga2/zones.conf
done < linux-list.txt

1)脚本应登录Icinga主服务器,并对在icinga2 pki ticket --cn '$f'文件中找到的每个节点运行命令linux-list.txt,并为每个主机生成票证

2)然后将生成的代码发送到每个节点($ f)

完成上述所有命令后,脚本需要运行命令icinga2节点向导,该向导将启动问题/答案提示,并需要有人键入答案,如下所示。

Icinga主机的FQDN为master.icinga.test.com,其IP为10.20.20.1。 PKI票证是我们先前在Icinga主机上生成的票证,每个主机都不同。

有什么办法可以自动化吗?

Y
Enter
master.icinga.test.com
Y
10.20.20.1
N
Y
[PKI Ticket created earlier on the Icinga master]
Enter
Enter
Y
Y
Enter
Enter
N
N

谢谢

1 个答案:

答案 0 :(得分:0)

以后,请尝试创建一个Minimal, Complete, and Verifiable example,因为它读起来太长了。

但是,您似乎只是想将一系列输入传递给提示。您可以使用heredoc来做到这一点,

PKI="some text whatever ticket thing blahblahblah"
somecmd << EOF
Y
Enter
master.icinga.test.com
Y
10.20.20.1
N
Y
$PKI
Enter
Enter
Y
Y
Enter
Enter
N
N
EOF

heredoc可以进行变量扩展。很酷。