环境
Centos 6.7
Plesk 12
Apache 2.2.15
PHP 5.4
期望脚本是:
$resized = false;
$(window).on('resize', function(){
if($(window).width() <= 1024 && $resized==false){
$("header > .content-max > .row").prepend( '<a href="#" class="logout"><svg class="pulse" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 22.3 22.3" style="enable-background:new 0 0 22.3 22.3;" xml:space="preserve"><g><g><path class="st0" d="M11.2,0C5,0,0,5,0,11.2c0,6.2,5,11.2,11.2,11.2c6.2,0,11.2-5,11.2-11.2C22.3,5,17.3,0,11.2,0z M17.6,17.6 c-1.7,1.7-4,2.7-6.5,2.7c-2.4,0-4.7-1-6.5-2.7C3,15.9,2,13.6,2,11.2c0-2.4,1-4.7,2.7-6.5S8.7,2,11.2,2c2.4,0,4.7,1,6.5,2.7 c1.7,1.7,2.7,4,2.7,6.5C20.3,13.6,19.4,15.9,17.6,17.6z"/><path class="st0" d="M11.2,4.3c-0.6,0-1,0.4-1,1l0,11.8c0,0.6,0.4,1,1,1c0.6,0,1-0.4,1-1l0-11.8C12.2,4.7,11.7,4.3,11.2,4.3z"/></g></g></svg></a></a>' );
$("header > .content-max > .row").prepend( '<a href="#" class="mobile-nav"><span class="icon-bar"></span><span class="icon-bar"></span></a>' );
$(".mobile-nav").click(function() {
$(this).toggleClass("pushed");
$("#main-nav").slideToggle(300);
});
$("body").prepend('<a href="#" class="top">Top</a>');
$resized = true;
} else {
$resized = false;
}
});
我没有#!语法,因为我通过exp_internal 1
spawn /bin/su root
expect "Password: "
send "supersecretthing\n"
expect "$"
send "service iptables start\n"
expect eof
exit
执行脚本。
当我通过Shell呼叫expect /absoluteRoute/MyScript
时,它很酷。它确实如此。但是,如果我通过Web浏览器尝试以下操作:
expect /absoluteRoute/MyScript
PHP代码最终会显示:
<?php
echo exec ('/usr/bin/expect /absoluteRoute/MyScript');
?>
我已经阅读了其他问题,我已经创建了 /var/www/.ssh 文件夹选项,但没有。
我想了解为什么我不能通过PHP执行expect脚本。是的,该脚本具有适当的权限和所有权。
答案 0 :(得分:0)
我认为问题可能是expect
脚本造成的。像这样改变
spawn su root
expect "Password: "
send "pwd\r"
expect "\\\$"; # Matching literal dollar sign
send "service iptables start\r"
expect "\\\$"; # Matching prompt again.
# After sending 'exit' only, we can expect 'eof'
send "exit\r"
expect eof
我已经测试了这个脚本,它通过php
执行得很好。
注意:
或者,要匹配一些常见的已知提示,您可以定义类似
的变量set prompt "#|>|%|\\\$ $"; # We escaped the `$` symbol with backslash to match literal '$'
最后一个美元符号代表行尾。
在使用expect时,我们必须附带-re标志来指定它作为正则表达式。
expect -re $prompt