¿Cómo comprobar la versión de Java en varios servidores?

¿Cómo comprobar la versión de Java en varios servidores?

Tengo 100 servidores y necesito iniciar sesión en ellos con ssh desde el servidor central usando un script: lo intenté a continuación con esto. Debería redirigir la versión al archivo que se almacenará en el servidor central.

#!/bin/bash

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

done < /pathforhosts/hosts.txt

Pero no obtengo resultados generados en el archivo./pathforoutputfile/outputjava.txt

Respuesta1

De hecho, ese comando escribe en 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)

Por lo tanto, debes redirigir usando 2>>en lugar de >>en

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

Otra cosa que noté es que no parece mencionar los nombres de host remotos en /pathforoutputfile/outputjava.txt.

información relacionada