我有一个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文件时,它看起来就像下面给出的那样。
我的目的是在浏览器的期望脚本ls /home
中显示倒数第二个命令的输出。我需要做什么修改。当我单独运行expect脚本时,它会给出正确的输出。请给我建议,因为我是php的初学者。
答案 0 :(得分:1)
如果您在控制台上执行php脚本,它就会获得您的权限。
在浏览器中运行脚本意味着网络服务器正在执行它。
如果你运行apache,用户应该是www-data。
您应该创建目录/var/www/.ssh并在此文件夹中授予www-data用户写入权限。