期望脚本通过Putty工作但不是通过http

时间:2015-06-09 19:30:06

标签: ssh expect

我有一个期望脚本连接到我们的一个远程服务器,它以管理员身份运行一些命令然后退出。当我通过Putty CLI运行脚本时,它可以正常工作。但是,当我通过http调用脚本失败时,脚本不会显示有效数据。 (下)

我一直在努力解决这个问题,并将其分解为最基本的水平来排除一切:

我运行调用expect脚本的test.php:

echo shell_exec("expect bwvtr.exp HOST USER PASS CLIUSER CLIPASS SOURCE DEST");

当通过putty运行时(ssh' d到管理服务器),它连接到网络服务器并正常运行。

======================================================================
BroadWorks Command Line Interface
  Type HELP for more information
======================================================================
Reading initial CLI command file...

NS_CLI> l CLIUSER
Password:
Administrator,Administrator logging in...

NS_CLI> vtr +1SOURCE DEST

然而,当我从网络主机调用脚本时,我得到了

======================================================================
BroadWorks Command Line Interface
  Type HELP for more information
======================================================================
Reading initial CLI command file...
[?1h

[?1l[?1h

[?1l[?1h

[?1l[?1h

[?1lExiting the CLI ...
[?1l]0;
  1. 我尝试在超时后发送下一个命令,但这也不起作用。脚本发送\ 003(Ctrl + c)以正确退出。
  2. 我已将本地服务器ssh设置更改为不发送任何环境变量。 Putty仍然有效,http仍然失败。
  3. 我通过ssh -v比较了SSH会话,它们完全相同。
  4. 我已将Locale和lang varibles设置为UTF-8,没有变化。
  5. 有没有人遇到过这个?

1 个答案:

答案 0 :(得分:0)

通过将stty cols设置为200并将行设置为100,我能够接收输出:

在spawn ssh和login之后,但在任何其他命令之前添加以下内容:

expect "$ "
send "stty cols 200\r"

expect "$ "
send "stty rows 100\r"