如何检查多个服务器上的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)

因此,您应该使用2>>而不是>>in进行重定向

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

我注意到的另一件事是您似乎没有在 中提及远程主机名/pathforoutputfile/outputjava.txt

相关内容