Ich habe eine Reihe von Servern in einer Textdatei namens network_list.txt
. Wie kann ich die Server durchlaufen und den Befehl ausführen und das Ergebnis anzeigen? Ich habe folgendes versucht:
filename="network_list.txt"
service=httpd
while read -r line
do
name="$line"
ping -c 3 $name > /dev/null 2>&1;
RETVAL=$?
if [ $RETVAL -ne 0 ]
then
echo "$name is down"
else
echo "$name is up and running"
fi
http_status=$(ssh $name ps -ef | grep -v grep | grep $service | wc -l)
if [ $http_status -ne 0 ]
then
echo "$service is up and running in $name"
else
echo "$service is down in $name"
fi
done < "$filename"
Aber es stoppt nach dem ersten Server.
Vielen Dank :) .
for
Schleife. Jetzt füge ich diese Hostnamen in eine Ansible-Konfigurationsdatei ein und fordere Ansible an, auf jedem von ihnen ein Skript auszuführen. Ansible bietet Ihnen die Möglichkeit, das Skript lokal zu schreiben und zu testen und es dann auf jedem Server remote auszuführen. Die Hälfte der Dinge, die meine Skripte früher erledigt haben, werden von Ansible-Modulen erledigt, daher muss ich viel weniger warten. A + wird niemals zurückkehren.
salt \* cmd.run "systemctl is-active httpd"