Automate feeding the output of a command to a prompt

戏子无情 提交于 2019-12-11 17:42:56

问题


I have a script that reads a text file that has all the nodes listed in there:

node1
node2
node3
.
.
.

This is my script:

#!/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) The script should log into the Icinga master and run a command icinga2 pki ticket --cn '$f' for each node found on that linux-list.txt file and generate a ticket for each host

2) Then sends this generated code to each node ($f)

After going through all the commands above, then the script needs to run a command icinga2 node wizard which will start a question/answer prompt and needs someone to type the answer as shown below.

Icinga master's FQDN is master.icinga.test.com and it's IP is 10.20.20.1. The PKI ticket is what we generated earlier on the Icinga master and it's different for each host.

Is there any way to automate this?

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

Thanks


回答1:


in the future, try to create a Minimal, Complete, and Verifiable example, because that was too long to read.

However, it looks like you just want to pipe a series of inputs to a prompt. You can do this with a heredoc, like so

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

heredocs can do variable expansion. cool.



来源:https://stackoverflow.com/questions/51544500/automate-feeding-the-output-of-a-command-to-a-prompt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!