Como verificar a versão do Java em vários servidores?

Como verificar a versão do Java em vários servidores?

Tenho 100 servidores e preciso fazer login neles com ssh do servidor central usando script: tentei abaixo com isso devo redirecionar a versão para o arquivo que será armazenado no servidor central.

#!/bin/bash

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

done < /pathforhosts/hosts.txt

Mas não estou obtendo saída gerada no arquivo/pathforoutputfile/outputjava.txt

Responder1

Na verdade, esse comando grava em 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)

Assim, você deve redirecionar usando 2>>em vez de >>in

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

Outra coisa que notei é que você não parece estar mencionando os nomes de hosts remotos no arquivo /pathforoutputfile/outputjava.txt.

informação relacionada