
我有 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
。