使用来自php的expect shell脚本只显示spawn命令

时间:2013-10-02 10:43:33

标签: php expect

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

当我从CLI调用这个php时它工作正常但是当我从网页上调用它时它只显示第一行spawn ssh user@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"

2 个答案:

答案 0 :(得分:0)

我建议你把它写成纯粹的期望脚本。节省资源(没有额外的sh过程):

#/usr/bin/expect
spawn ssh user@host
expect "password:"
send "XXXX\r"
expect -re "prompt>"
send "./xx.sh [join $argv]\r"
expect -re "prompt>"
send "sleep 35"
expect -re "prompt>"
send "logout"

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

下一步我建议添加一行

exp_internal 1
在shebang之后。这将输出更多,这有助于调试。

答案 1 :(得分:0)

我有一个类似的问题,并在我的期望脚本的末尾添加以下内容修复它:

expect eof
exit
相关问题