在PHP中运行expect

时间:2013-07-23 12:02:22

标签: php expect

我有一个index.php,如下所示。

<?php
    $v = passthru("expect ./script2.exp qbadmin password hostname 'root_password' 6969") > &1;
    echo "==========" . $v;
?>

我的期望脚本如下,

#!/usr/bin/expect
set username [lindex $argv 0]
set pass [lindex $argv 2]
set host [lindex $argv 1]
set rootpass [lindex $argv 3]
set port [lindex $argv 4]
spawn ssh -o GSSAPIAuthentication=no $username@$host -p $port
expect -timeout 3 "*(yes/no)?" { send "yes\r";exp_continue }
expect -timeout 3 "*d: "
send "$pass\n"
expect -timeout 3 "*$ "
send "su -\r"
expect -timeout 3 "*d: "
send "$rootpass\r"
expect -timeout 3 "*#"
send "ls /home\r"
interact

当我在浏览器中加载index.php文件时,它看起来就像下面给出的那样。

enter image description here

我的目的是在浏览器的期望脚本ls /home中显示倒数第二个命令的输出。我需要做什么修改。当我单独运行expect脚本时,它会给出正确的输出。请给我建议,因为我是php的初学者。

1 个答案:

答案 0 :(得分:1)

如果您在控制台上执行php脚本,它就会获得您的权限。

在浏览器中运行脚本意味着网络服务器正在执行它。

如果你运行apache,用户应该是www-data。

您应该创建目录/var/www/.ssh并在此文件夹中授予www-data用户写入权限。