
Tenho 100 servidores e preciso fazer login neles com ssh do servidor central usando script: tentei abaixo com isso devo redirecionar a versão para o arquivo que será armazenado no servidor central.
#!/bin/bash
CMD='java -version'
while read line
do
ssh -n user@"$line" $CMD >> /pathforoutputfile/outputjava.txt
done < /pathforhosts/hosts.txt
Mas não estou obtendo saída gerada no arquivo/pathforoutputfile/outputjava.txt
Responder1
Na verdade, esse comando grava em 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)
Assim, você deve redirecionar usando 2>>
em vez de >>
in
ssh -n sgarole@"$line" $CMD >> /pathforoutputfile/outputjava.txt
Outra coisa que notei é que você não parece estar mencionando os nomes de hosts remotos no arquivo /pathforoutputfile/outputjava.txt
.