Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I am trying to automate the installation of Icinga2 on many remote clients. The PKI token will get generated on the Icinga server and it's different for each client - Then it should be sent to each client. As part of the client installation, icinga2 node wizard would run and I would like to pipe a series of inputs to a prompt as below. Can you please check to see if I use the heredoc correctly?

#!/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

Thank you

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
187 views
Welcome To Ask or Share your Answers For Others

1 Answer

You have a few errors in the code.

#!/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

You'll notice in particular how the last ssh needs to have all the code which should run there inside the single quotes. It receives the ticket on its standard input, and uses $(cat) to directly capture it in a variable. Also, the empty lines in the here document produce an etrer keystroke with nothing else before it in the input to icinga2.

As already suggested in previous questions of yours, you should probably be using icinga2 node setup instead of node wizard in scripts.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...