Есть ли метод, похожий на PHP GET для скриптов bash?
Это то, что я пытаюсь сделать …
PHP-файл устанавливает переменную и выполняет сценарий удаленного bash, переменная передается и используется в сценарии bash.
Так что это мой скрипт PHP …
<?php
$myvar = 'hello world';
$connection = ssh2_connect('example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$stream = ssh2_exec($connection, '/usr/incoming/myscript.sh');
?>
И это myscript.sh на удаленной машине …
#!/bin/bash
echo $myvar
Конечно, это не работает, потому что я не уверен, как передать $ myvar из файла PHP в myscript.sh
Я знаю, с помощью PHP это делается с помощью GET, но как мне это сделать в этой ситуации?
Как прокомментировал @Phylogenesis, вы хотите просто поместить переменные после вызова сценария, а затем вызвать использование сценария bash $1
читать вар:
$stream = "/usr/incoming/myscript.sh " . escapeshellarg($myvar);
Ваш скрипт bash будет выглядеть так:
#!/bin/bash
echo "$1"
Недавно я опубликовал проект, который позволяет PHP получать и взаимодействовать с реальной оболочкой Bash, даже через SSH. Получи это здесь: https://github.com/merlinthemagic/MTS
После загрузки вы просто используете следующий код:
$shell = \MTS\Factories::getDevices()->getRemoteHost('example.com')->getShellBySsh('username', 'secretPassword');
//instead of triggering a script, just trigger the individual commands i.e.:
$return1 = $shell->exeCmd("echo \$myvar");
script.php
<?php
$myvar = 'hello world';
$myvar = escapeshellarg($myvar);
$connection = ssh2_connect('example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$stream = ssh2_exec($connection, '/usr/incoming/myscript.sh '.$myvar);
myscript.sh
#!/bin/bash
echo $1