使用php中的ExpectShell脚本只显示spawn命令

使用php中的ExpectShell脚本只显示spawn命令,php,expect,Php,Expect,我正在使用一个php脚本,它从html页面获取参数并将它们发送到expect shell 当我从CLI调用这个php时,它工作正常,但当我从网页调用它时,它只显示第一行spawn sshuser@host 守则: #!/bin/sh var=$(expect -c " spawn ssh user@host expect \"password:\" send \"XXXX\r\" expect -re \"prompt>\" send \"./xx.sh $1 $2 $3\r\" exp

我正在使用一个php脚本,它从html页面获取参数并将它们发送到expect shell

当我从CLI调用这个php时,它工作正常,但当我从网页调用它时,它只显示第一行
spawn sshuser@host

守则:

#!/bin/sh
var=$(expect -c "
spawn ssh user@host 
expect \"password:\"
send \"XXXX\r\"
expect -re \"prompt>\"
send \"./xx.sh $1 $2 $3\r\"
expect -re \"prompt>\"
send \"sleep 35\"
expect -re \"prompt>\"
send \"logout\"
")
echo "$var"

我建议你把它写成纯粹的expect脚本。节省资源(无需额外的sh流程):

这里唯一的变化是shebang和
[join$argv]
。这将把您传递的所有参数传递给此expect脚本

作为下一步,我建议添加一行

exp_internal 1

谢邦之后。这将输出更多,这有助于调试。

我遇到了类似的问题,并在expect脚本的末尾添加了以下内容来修复它:

expect eof
exit

嗨,我试过了,但结果还是一样。我只看到sciprt的第一行:spwansshuser@host就这样。当我从cli运行它时,一切正常。我设法连接并运行了脚本,但我只能看到部分结果,而不是全部结果,这可能是什么问题?还有一个问题:如何调用脚本?我使用一个php脚本来运行另一台机器上运行另一个脚本的另一个本地sh脚本(expect)。
expect eof
exit