2014年5月21日星期三上午10:09 我在两个程序下运行
第一个程序:
while read line
do
if (cat /etc/passwd | grep -w ^"userid")
then
echo $line
fi
done < serverlist
输出:
userid:kjhfkjshd:hjgf:hsgdf:hsgbdf
server1
userid:kjhfkjshd:hjgf:hsgdf:hsgbdf
server2
第二个程序:
while read line
do
if ( sudo /bin/ssh $line /bin/cat /etc/passwd | grep -w ^"userid" )
then
echo $line
fi
done < serverlist
输出
userid:kjhfkjshd:hjgf:hsgdf:hsgbdf
server1
它不会检查第二台服务器。我无法找到第二个程序的错误。第一个程序没问题。请有人帮帮我吗?
答案 0 :(得分:2)
这是一个常见的问题&#34;在循环中使用ssh
时。根本原因是,当第一次生成ssh
时,它会消耗你输入的其余部分,因此在循环的第二次迭代中,它会发现没有任何事情要做并终止。
解决此问题的方法是将/dev/null
作为输入提供给ssh
,方法是ssh -n ...
或更明确的ssh ... < /dev/null
。