Estoy usando L 5.8 y tengo un formulario con 3 entradas
En este momento, puedo usar SSH en un servidor específico con este paquete laravelcollective/remote": "~5.8 . Necesitaba preconfigurar IP , UN, PW en config/remote.php así:
'connections' => [ 'production' => [ 'host' => '1.1.1.1', 'username' => 'code', 'password' => '8888', 'key' => '', 'keytext' => '', 'keyphrase' => '', 'agent' => '', 'timeout' => 10, ], ],Luego, puedo ejecutar fácilmente cualquier comando o incluso encadenarlos
$commands = ['cd /home/code && ./runMe.sh']; SSH::run($commands, function($line) { echo $line.PHP_EOL; });Resultado
Mi portal se conectará a ese servidor y ejecutará ese comando con éxito, y lo he verificado.
Necesito leerlo desde las entradas del formulario. ¿Es posible usar el mismo complemento y configurar dinámicamente ese archivo remote.php ?
o
¿Debo empezar a buscar en otra cosa porque esto es un callejón sin salida?
Por favor avise,
Puedes usar el ayudante config() aquí:
configuración de ejemplo:
config([ 'remote.connections.production.host' => $request->input('hostname'), 'remote.connections.production.username' => $request->input('username'), 'remote.connections.production.password' => $request->input('password') ]);luego llame:
$commands = ['cd /home/code && ./runMe.sh']; SSH::run($commands, function($line) { echo $line.PHP_EOL; });Este ejemplo requiere el paquete php-ssh2 y proporciona muchas formas de recuperar el STDOUT de shell remoto como una secuencia. También es genial controlar el shell de la máquina actual y obtener respuestas.
sudo apt install php-ssh2O por versión:
sudo apt install php7.4-ssh2 Ejemplo de uso de ssh2_exec() y ssh2_fetch_stream() :
<?php $ssh = ssh2_connect('192.162.68.212', 22); // Remote address ssh2_auth_password($ssh, 'root', 'XQA8DCamdEm'); // Credentials $shell = ssh2_shell($ssh, 'xterm'); // Choose remote shell $stream = ssh2_exec($ssh, 'cd /home/code && ./runMe.sh'); // Remote command stream_set_blocking($stream, true); // Wait for multiline output, till EOF $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO); // SSH2_STREAM_STDERR echo stream_get_contents($stream_out); // Print in real-time Es posible recuperar solo los errores, esto es excelente para monitorear solo sin analizar toda la salida, usando el indicador SSH2_STREAM_STDERR .
Para escribir cadenas solo en STDERR desde el PHP remoto , podemos usar:
fwrite(STDERR, "Some logs, from machine (...)\n");O podemos canalizar los errores directamente en el comando de shell remoto:
cd /home/code && ./runMe.sh 2>