![複数のサーバーでJavaのバージョンを確認するには? [コピー]](https://linux33.com/image/154343/%E8%A4%87%E6%95%B0%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%A7Java%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
私は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の代わりにusingを使用して>>
リダイレクトする必要があります。
ssh -n sgarole@"$line" $CMD >> /pathforoutputfile/outputjava.txt
私が気づいたもう一つのことは/pathforoutputfile/outputjava.txt
。