PHP вызывает Expect Script (работает при запуске сценария через SSH, но при запуске с PHP)

У меня есть UBNT Toughswitch, и я пытаюсь удаленно отключить питание PoE своим мобильным телефоном с помощью php и скриптов. Я делаю это с помощью похожих скриптов с UBNT mFi. Сценарий работает нормально, если я подключаюсь к серверу по SSH (w / root, только пользователь, которого я когда-либо настраивал) и запускаю его в расположении, в котором он находится. Я проверил все поля R / W / E в сценарии и код php на случай, если он был проблема разрешения 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
}
}
}
}
}
}

Это пройдет через все до сохранения && перезагрузить часть и не будет делать это при вызове через php. Через SSH работает нормально. Я также попытался сохранить и перезагрузить с 2 различными командами на случай, если это не понравилось &&и выделил это в отдельный скрипт, чтобы убедиться, что это где. Это как PHP просто отказывается отправить сохранить && перезагрузка по какой-то причине, например, из-за проблем с правами доступа, но она отправляет его на другое устройство через ssh, поэтому для меня это не имеет смысла. Это отключение poe 24v на порту 3. У меня есть другие для включения (24/48) и перезагрузки, которые работают без php, но не с php.

0

Решение

Не 100% ответ, но это работает.

Если я добавлю другое сохранение && перезагрузиться так:

    expect "*#*"send "save && reboot/r"expect "*#*"send "save && reboot/r"

Он не выдает ошибку при запуске скрипта php, вероятно, если я запускаю его нормально, но это все равно не было моим намерением. Подумайте, это проблема с выбором времени # где-то при запуске php.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]