我有47台Linux客户端机器和一台Solaris服务器机器(所有Linux客户端机器都是红帽5.1)
所有客户端执行ssh连接到服务器为了validation服务器中是否存在/tmp/generic_error.txt
客户正好在下午12点完成ssh
我看到一些奇怪的东西
尽pipe存在此文件,但某些客户端仍然无法识别服务器中是否存在/tmp/generic_error.txt
所以我的第一个结论是,我不能从47台机器执行多个SSH到一台服务器?
但我不确定我是否正确?
请build议在同一时间从47个Linux客户端到一台服务器执行ssh的最佳过程是什么?
备注 – 我无法触摸并configuration“基于ssh密钥的身份validation”,因为Lenox的机器必须有密码(我们的安全策略的一部分)
10.10.18.61 – 服务器机器
expect=`cat << EOF set timeout -1 spawn ssh 10.10.18.61 expect { ")?" { send "yes\r" ; exp_continue } word: {send freenelsonmandela\r} } expect > {send "ls /tmp/generic_error.txt\r"} expect > {send exit\r} expect eof EOF`
预期:
expect -c "$expect" | grep "generic_error.txt" | grep -v ls
如果我理解正确,你有47个客户端,需要知道是否有一些文件存在于主机上。 这需要同时运行。
让我们从最小的组件开始,您的文件testing。 你可以扩大一些
这应该适用于大多数炮弹
ls /tmp/file 2>&1 >/dev/null && echo Found || echo Not Found
或BASH
[ -f /tmp/file ] && echo Found || echo Not Found
你可能想要检查你正在使用的shell,可能是ksh,然后仔细检查它的内build函数,检查是否存在一个文件。
现在稍微向外,在你期望的结尾,你没有做任何结果。 这可能是你的大部分问题的原因。 你可以访问$expect_out(buffer) ,它将包含上次匹配之间的内容。
通常这被用作:
puts "$expect_out(buffer)"