我有一个UBNT Toughswitch,我正试图用我的手机用PHP和脚本远程关闭poe power。我用UBNT mFi的类似脚本做到这一点。如果我通过SSH连接到服务器(w / root,我只设置用户)并在其所在的位置运行它,脚本工作正常。我检查了脚本和php代码上的所有R / W / E框,以防它是一个php权限问题。所以这是脚本:
PHP使用http get请求调用脚本:
<?php
system ( "./tsport3-24-off.sh" );
?>
<script type="text/javascript">
window.close();
</script>
这是期望脚本:
#!/usr/bin/expect
set timeout 30
spawn ssh shane@$ip
expect {
"*assword:*" {
send "$password\r"
expect {
"*assword:*" {
close
continue
}
"*#*" {
send "grep -v 'switch.port.3.poe=48' /var/tmp/system.cfg > /var/tmp/tmpsystem.cfg; mv /var/tmp/tmpsystem.cfg /var/tmp/system.cfg\r"
expect {
"*not found*" {
close
}
"*#*" {
send "save && reboot\r"
interact
}
}
}
}
}
}
它将通过一切,直到保存&amp;&amp;重启部分,并在通过php调用时不会这样做。通过SSH,它工作正常。我还尝试使用2个不同的命令保存并重新启动,以防它不喜欢&amp;&amp;和隔离它到一个单独的脚本中以确保它就在它的位置。就像php一样拒绝发送save&amp;&amp;由于某些原因重新启动,例如权限问题,但它通过ssh将其发送到其他设备,因此对我来说没有意义。这个是关闭端口3上的poe 24v。我有其他人打开(24/48)并重新启动所有工作没有PHP,但没有PHP。
答案 0 :(得分:0)
不是100%的答案,但它确实有效。
如果我添加另一个保存&amp;&amp;像这样重启:
expect "*#*"
send "save && reboot/r"
expect "*#*"
send "save && reboot/r"
当php脚本运行时,它不会出错,如果我正常运行它可能会发生错误,但这无论如何都不是我的意图。认为这是一个时间问题,或者当它被php运行时,它会在某处获得额外的#。