0

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

当我从 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"
4

2 回答 2

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之后。这将输出更多,这有助于调试。

于 2013-10-02T11:03:57.193 回答
0

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

expect eof
exit
于 2015-09-23T17:28:56.730 回答