【发布时间】:2017-05-30 16:35:15
【问题描述】:
我有一个 UBNT Toughswitch,我正在尝试使用我的手机使用 php 和脚本远程关闭 poe 电源。我使用 UBNT mFi 的类似脚本来执行此操作。如果我通过 SSH 连接到服务器(使用 root,只有我曾经设置的用户)并在其所在的位置运行它,则该脚本可以正常工作。我检查了脚本和 php 代码上的所有 R/W/E 框以防万一php权限问题。所以这里是脚本:
PHP 通过 http get 请求调用脚本:
<?php
system ( "./tsport3-24-off.sh" );
?>
<script type="text/javascript">
window.close();
</script>
这是 Expect 脚本:
#!/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
}
}
}
}
}
}
它将通过一切,直到保存 && 重新启动部分,并且在通过 php 调用时不会这样做。通过SSH,它工作正常。我还尝试使用 2 个不同的命令保存并重新启动,以防它不喜欢 &&,并将其隔离到一个单独的脚本中以确保它在哪里。就像 php 出于某种原因(例如权限问题)拒绝发送 save && reboot ,但它通过 ssh 将其发送到不同的设备,所以这对我来说没有意义。这个是关闭端口 3 上的 poe 24v。我有其他的 on (24/48) 并重新启动,所有工作都可以在没有 php 的情况下工作,但不能使用 php。
【问题讨论】:
标签: php ssh centos httprequest expect