Usando o grep para saídas do bash

0

Eu quero encontrar servidores que não usem o comando "net". Então, eu vou executar um script do controle remoto. O roteiro é assim:

for ip in $(cat ip_list_file)
do
    netCom=$(ssh -o ConnectTimeout=2 -o StrictHostKeyChecking=no -o PasswordAuthentication=no $ip "net ads info | grep -i command | wc -l")
    if [ $netCom -eq 1 ]
    then 
        echo -e $ip >> not_installed
    else
        echo -e $ip >> installed
    fi
done

Mas eu tenho um problema no comando "net info info | grep -i comando | wc -l", porque eu estava pensando em usar o comando "bash: net: não encontrado ... "frase, mas não posso. Eu não quero reverter meu script como encontrar instalado. Minha pergunta é a seguinte: Como posso usar o comando grep para as saídas como "bash: net: command not found ..."?

    
por Gefolge 03.08.2017 / 11:01

1 resposta

2

A mensagem de erro é impressa em stderr, então você precisa redirecioná-la para stdout, para que o grep a encontre.

for ip in $(cat ip_list_file)
do
    netCom=$(ssh -o ConnectTimeout=2 -o StrictHostKeyChecking=no -o PasswordAuthentication=no $ip "net ads info 2>&1 | grep -i command | wc -l")
    if [ $netCom -eq 1 ]
    then 
        echo -e $ip >> not_installed
    else
        echo -e $ip >> installed
    fi
done
    
por 03.08.2017 / 11:14