저는 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
.