Как проверить версию Java на нескольких серверах?

Как проверить версию Java на нескольких серверах?

У меня 100 серверов, и мне нужно подключиться к ним по SSH с центрального сервера, используя скрипт: Я попробовал сделать следующее, и мне нужно перенаправить версию в файл, который будет храниться на центральном сервере.

#!/bin/bash

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

done < /pathforhosts/hosts.txt

Но я не получаю вывод, сгенерированный в файле/pathforoutputfile/outputjava.txt

решение1

Эта команда на самом деле записывает данные в 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)

Таким образом, вам следует перенаправить using 2>>вместо >>in

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

Еще я заметил, что вы, похоже, не упоминаете имена удаленных хостов в /pathforoutputfile/outputjava.txt.

Связанный контент