ssh + 多个 ssh 连接失败

ssh + 多个 ssh 连接失败

我有 47 台 Linux 客户端机器和一台 Solaris 服务器机器(所有 Linux 客户端机器都是 red-hat 5.1)

所有客户端都执行与服务器的 ssh 连接,以验证服务器中是否存在 /tmp/generic_error.txt

客户端在中午 12:00 执行 ssh

我看到一些奇怪的东西

尽管 /tmp/generic_error.txt 文件存在,但有些客户端无法识别它

所以我的第一个结论是我无法从 47 台机器向一台服务器执行多次 ssh?

但我不确定我说得是否正确?

请告知从 47 个 Linux 客户端同时向一台服务器执行 ssh 的最佳流程是什么?

备注 - 我无法触摸和配置“基于 ssh 密钥的身份验证”,因为 Lenox 的机器必须有密码(这是我们安全策略的一部分)

  • Linux 客户端中的 Expect 脚本示例 - 此 Expect 验证服务器中是否存在 /tmp/generic_error.txt(此操作应于中午 12:00 在所有 47 个 Linux 客户端上准确执行)

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`

exe 期望:

expect -c  "$expect"  | grep "generic_error.txt"  | grep -v ls

答案1

如果我理解正确的话,您有 47 个客户端需要知道服务器主机上是否存在某个文件。并且这需要同时运行。

让我们从最小的组件开始,即文件测试。你可以扩展它

这应该适用于大多数 shell

ls /tmp/file 2>&1 >/dev/null && echo Found || echo Not Found

或 BASH

[ -f /tmp/file ] && echo Found || echo Not Found

您可能需要进一步检查您正在使用的 shell,可能是 ksh,并仔细检查其内置函数以查看文件是否存在。

现在稍微向外看,在您的期望结束时,您没有对结果做任何事情。这可能是导致大多数问题的原因。您可以访问$expect_out(buffer)其中包含最后几场比赛之间的内容。

通常用作:

puts "$expect_out(buffer)"

相关内容