PHP exec 期望使用 SCP 编写脚本



我在C:\WampServer\www\dnsmasq\php\dnsmasq.php有一个PHP脚本:

function uploadConfig() {
    exec('C:cygwin64binexpect -f /home/Dave/bin/scp.expect asdf', $output, $exitCode);
    print_r($output);
    print($exitCode);
}

在/home/Dave/bin/scp.expect 调用脚本:

#!/usr/bin/expect -f
set password [lindex $argv 0]
spawn /usr/bin/scp /home/Dave/bin/test root@192.168.1.1:/etc/test
expect {
    -re ".*yes.*no.*" {
        exp_send "yesr"
        exp_continue
    }
    -re ".*password.*" {
        exp_send "$passwordr"
    }
}
interact

要上传的文件包含一行:

Testing

运行 uploadConfig 函数会在页面上产生以下输出:

Array ( [0] => spawn /usr/bin/scp /home/Dave/bin/test root@192.168.1.1:/etc/test [1] => root@192.168.1.1's password: ) 0 

该文件出现在服务器上的/etc/test 上,但它是空白的,即它不包含"测试"一词。

我可以在 cygwin shell 中运行期望脚本,它会上传包含以下内容的文件:

$ expect -f /home/Dave/bin/scp.expect asdf

当我尝试从 PHP 执行此操作时,我不确定失败点在哪里。

当你想与生成的应用程序进行交互时,你可以使用interact,猜猜怎么着。

如果要生成一个程序,请向其发送一些数据,然后等待它完成,请改用expect eof

最新更新