SSH zu mehreren Servern und Ausführen der anwendungsspezifischen Befehle anstelle von Betriebssystembefehlen

SSH zu mehreren Servern und Ausführen der anwendungsspezifischen Befehle anstelle von Betriebssystembefehlen

Mein Skript vom Quellserver versucht, per SSH auf mehrere Server zuzugreifen und den anwendungsspezifischen Befehl auszuführen, was ich anders als bei Betriebssystembefehlen (wie cat, chmod usw.) sagen kann. Ich erhalte den Fehler „Befehl nicht gefunden“. Unten ist das Skript.

for host in $(cat hosts_list.txt)
do
ssh $host chk_auto_up > "cmd_output.txt"
done

Kann mir jemand helfen, was ich in das Skript aufnehmen muss, um den Befehl zu identifizieren, auszuführen und die Ausgabe in die Datei zu schreiben?

Ich habe die Fehlermeldung, dass der Befehl nicht gefunden wurde

Antwort1

Sie bearbeiten einfach die Zeile:

ssh $host /path/of/chk_auto_up > "cmd_output.txt"

Definieren Sie den absoluten Pfad des Befehls.

Antwort2

Ich habe eine Antwort gefunden, wie man einen externen Befehl remote über SSH ausführt.

for host in $(cat /***/thishost/**/username/hosts_list.txt)
do
ssh "$host"
. /**/***/*****/*****/******.${HOST}  
chk_auto_up >> "/****/thishost/***/*****/cmd_output.txt"
exit
done

Einzelheiten:

  1. hosts_list.txt --> Ich habe eine Liste von Servern, bei denen ich mich per SSH anmelden kann
  2. ssh "$host" --> Die SSH-Anmeldung erfolgt auf dem ersten Server.
  3. . /**/***/*****/*****/******.${HOST}--> Der Binärpfad des externen Befehls ist hier verfügbar
  4. chk_auto_up >> "/****/thishost/***/*****/cmd_output.txt" --> Führen Sie den Befehl aus und schreiben Sie die Ausgabe auf den Quellserver.

verwandte Informationen