SSH +多个SSH连接失败

我有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的机器必须有密码(我们的安全策略的一部分)

  • Linux客户端期望脚本的例子 – 这个期望validation服务器中是否存在/tmp/generic_error.txt(这个操作应该在所有47个Linux客户端上的12:00之前完成)

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)"