Wie überprüfe ich die Java-Version auf mehreren Servern?

Wie überprüfe ich die Java-Version auf mehreren Servern?

Ich habe 100 Server und muss mich mithilfe des folgenden Skripts per SSH vom zentralen Server aus bei ihnen anmelden: Ich habe es wie folgt versucht: Damit sollte die Version in die Datei umgeleitet werden, die auf dem zentralen Server gespeichert wird.

#!/bin/bash

CMD='java -version'
while read line
do
    ssh -n user@"$line" $CMD >> /pathforoutputfile/outputjava.txt

done < /pathforhosts/hosts.txt

Ich erhalte jedoch keine in der Datei generierte Ausgabe/pathforoutputfile/outputjava.txt

Antwort1

Dieser Befehl schreibt tatsächlich in stderr.

ron@haggis:~$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment (build 11.0.2+9-Ubuntu-3ubuntu118.04.3)
OpenJDK 64-Bit Server VM (build 11.0.2+9-Ubuntu-3ubuntu118.04.3, mixed mode, sharing)
ron@haggis:~$ 
ron@haggis:~$ java -version 2> foo.txt
ron@haggis:~$ cat foo.txt
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment (build 11.0.2+9-Ubuntu-3ubuntu118.04.3)
OpenJDK 64-Bit Server VM (build 11.0.2+9-Ubuntu-3ubuntu118.04.3, mixed mode, sharing)

Daher sollten Sie die Weiterleitung mit 2>>statt >>mit durchführen.

ssh -n sgarole@"$line" $CMD >> /pathforoutputfile/outputjava.txt

Eine weitere Sache, die mir aufgefallen ist, ist, dass Sie die Remote-Hostnamen in nicht zu erwähnen scheinen /pathforoutputfile/outputjava.txt.

verwandte Informationen