我在C:\ WampServer \ www \ dnsmasq \ php \ dnsmasq.php上有一个PHP脚本:
function uploadConfig() {
exec('C:\cygwin64\bin\expect -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 "yes\r"
exp_continue
}
-re ".*password.*" {
exp_send "$password\r"
}
}
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服务器上,但它是空白的,即它不包含单词“Testing”。
我可以在cygwin shell中运行expect脚本,并使用内容上传文件:
$ expect -f /home/Dave/bin/scp.expect asdf
当我尝试从PHP执行此操作时,我不确定失败点在哪里。
答案 0 :(得分:3)
您可以根据需要使用interact
,猜测是什么,以交互方式与衍生的应用程序进行交互。
如果你想生成一个程序,向它发送一些数据,并等待它完成,改为使用expect eof
。