****UPDATE**** # The issue was within the wanpipemon script and the way that it interacts # with ioctl basically unless you want to edit the source for wanpipemon # and recompile it, it will not work. I have tried -S with root among # others and unless I am within console it throws a not authorized error # in the ioctl function.
Хорошо У меня есть простой сценарий оболочки, который запускает команду и выводит напряжение линии FXO, обычно вам нужно получить одну строку за раз, когда она объединяет их с одним считываемым выходом. (не относится к этому сообщению, но я думал, что кто-то может спросить, что делает этот скрипт)
Это сценарий оболочки:
#!/bin/bash LINE1=$(wanpipemon -i w1g1 -c astats -m 1 | grep -m1 VOLT | cut -d ":" -f 2-2) LINE2=$(wanpipemon -i w1g1 -c astats -m 2 | grep -m1 VOLT | cut -d ":" -f 2-2) LINE3=$(wanpipemon -i w1g1 -c astats -m 3 | grep -m1 VOLT | cut -d ":" -f 2-2) LINE4=$(wanpipemon -i w1g1 -c astats -m 4 | grep -m1 VOLT | cut -d ":" -f 2-2) LINE5=$(wanpipemon -i w1g1 -c astats -m 5 | grep -m1 VOLT | cut -d ":" -f 2-2) LINE6=$(wanpipemon -i w1g1 -c astats -m 6 | grep -m1 VOLT | cut -d ":" -f 2-2) echo "Line 1 Voltage: $LINE1" echo "Line 2 Voltage: $LINE2" echo "Line 3 Voltage: $LINE3" echo "Line 4 Voltage: $LINE4" echo "Line 5 Voltage: $LINE5" echo "Line 6 Voltage: $LINE6"
Запуск сценария на машине через терминал отлично работает. В моем скрипте PHP я просто делаю это (php-скрипт находится на том же сервере, что и файл sh):
<?php $output = shell_exec('/usr/sbin/linesta.sh'); echo "<pre>$output</pre>"; ?>
Результат, который я получаю в браузере, выполняющем скрипт, следующий:
Line 1 Voltage: Line 2 Voltage: Line 3 Voltage: Line 4 Voltage: Line 5 Voltage: Line 6 Voltage:
Теперь я убедился, что разрешения правильные, хорошо уже знать, что, поскольку он работает на 50% пути, и, как я уже сказал, я знаю, что скрипт работает на машине.
Это просто странно из-за того, что он выводит статический текст, но не динамический текст. Команда wanpipemon -i w1g1 -c astats -m * является частью приложения драйвера для аналоговой карты на моей УАТС и не нуждается в корневом управлении для ее запуска (любой пользователь может запустить команду), поэтому он смущает меня в отношении того, что продолжается.
Любая помощь и / или советы по отладке будут очень оценены, до сих пор я только пробовал двойную проверку разрешений на сценарий оболочки, запуская скрипт на сервере в консоли (linesta.sh), но я не уверен, что еще проверить. Я пробовал другие PHP-команды, такие как exec () и system () с точно такими же результатами.