使用 grep 获取 bash 输出

使用 grep 获取 bash 输出

我想找到不使用“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:命令找不到...”这句话,但是我不能。我不想像 find installed 那样反转我的脚本。我的问题是:如何使用 grep 命令来输出像“bash:net:找不到命令......”这样的输出?

答案1

错误消息会打印到 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

相关内容