Я хочу найти серверы, которые не используют команду "net". Итак, я буду запускать скрипт с пульта. Сценарий таков:

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

Но у меня проблема с командой «net ads info | grep -i command | wc -l», потому что я думал, что могу использовать предложение «bash: net: command not found ...», но не могу. Я не хочу отменить мой сценарий, как найти установлен. У меня такой вопрос: как я могу использовать команду grep для выходных данных, таких как "bash: net: команда не найдена ..."?

1 ответ1

2

Сообщение об ошибке выводится в stderr, поэтому вам нужно вместо этого перенаправить его в stdout, чтобы grep мог его найти.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .