我有一个执行expect脚本的php脚本。 scpectt通过telnet远程连接到另一个设备,在那里执行几个命令并返回结果。 Php脚本只是一种在网页上输出远程设备返回的结果的方法。
这是我遇到问题的一行:
stty rows 1000
当我从控制台执行我的脚本时,一切正常:远程设备返回1000(无论我在stty行中指定的是什么)输出行。 当我从Web浏览器执行我的脚本时,无论我在stty行中指定什么,我都会获得15行输出。 有谁知道我做错了什么?
以防万一,这是我正在使用的scipts:
的script.php :
<?php echo shell_exec("/path/to/expect_scipt.exp"); ?>
expect_scipt.exp :
#!/usr/bin/expect
stty rows 1000
spawn telnet 10.0.0.1
expect "login:"
send "admin\n"
expect "assword:"
send "admin\n"
expect ">"
send "en\n"
expect "assword:"
send "admin\n"
expect "#"
send "show cable modem\n"
expect "#"
exit
以下是我测试它们的方法:
我在控制台中运行:
#su apache
$php script.php
...1000 lines of output...
我打开网络浏览器并导航到script.php
...15 lines of output...
提前致谢。
答案 0 :(得分:1)
尝试使用PHP执行stty命令时遇到了类似的问题。
问题是apache用户(www-data)没有权限在/ dev / ttyX特殊文件上执行stty。
要解决此问题,请编辑/ etc / group并将用户www-data添加到拨出组,该组是这些文件的默认组。
希望这有帮助。
塞巴斯蒂安