Shell-Script
如何檢查多台伺服器上的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
該命令實際上確實寫入標準錯誤。
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>>
而不是>>
inssh -n sgarole@"$line" $CMD >> /pathforoutputfile/outputjava.txt
我注意到的另一件事是,您似乎沒有在
/pathforoutputfile/outputjava.txt
.