Я пытаюсь выполнить сценарий удаленного Bash, используя частный IP-адрес этой машины. Он находится в той же VLAN. Тем не менее, я получаю результат NULL это правильный способ для вызова сценария удаленного Bash?
<?php
header('Content-Type: application/json');
$result =shell_exec('sh http://10.xxx.77.xxx/script/helloworld.sh ');
/* making json string with the result from shell script */
echo json_encode(array("result"=>$result));
/* and we are done and exit */
?>
helloworld.sh
#!/bin/bash
echo "Hello World"
Выход:
{ «Результат»: нулевая}
Я бы порекомендовал заглянуть в библиотеку, предназначенную для этого. phpseclib (http://phpseclib.sourceforge.net/) приходит мне в голову. У меня был небольшой опыт использования этой библиотеки для генерации ключей, но она позволит вам создать простое соединение SSH, используя любой из обычных протоколов, и запускать команды через соединение SSH.
Проверьте эта секция документации.
Попробуйте использовать:
exec('./path/to/bash', $result);
И если это на другом сервере, я очень сомневаюсь, что вы сможете выполнить его. Вам необходимо установить разрешение 777 (возможно, это риск для безопасности, в зависимости от сценария. Кроме того, если оно установлено на другом сервере, почему бы просто не поместить его на тот же сервер, на котором выполняется сценарий?