Proyecto tras proyecto van surgiendo nuevas necesidades y, en algunos casos, una de ellas es la posibilidad de conectarnos remotamente a un servidor para ejecutar comandos desde nuestra aplicación Laravel.
Gracias al paquete de spatie/ssh, podernos conectarnos y lanzar comandos de manera ágil y sencilla, sin la necesidad de salir de la aplicación.
Instalación
Para instalar el paquete, tan solo necesitamos Composer:
composer require spatie/sshUna vez instalado, no es necesaria ninguna configuración adicional.
Uso básico del paquete
Para ejecutar un comando en un servidor solo necesitaremos las credenciales de acceso o, como mostraremos a continuación, la clave SSH privada:
use Spatie\Ssh\Ssh;
$result = Ssh::create('usuario', 'servidor.com')
->usePrivateKey('/home/user/.ssh/id_rsa')
->execute('ls -la');
dd($result);El resultado que nos devolverá la consulta podremos procesarlo más tarde.
También podemos ejecutar varios comandos, los cuales se ejecutarán en el orden que indiquemos:
$result = Ssh::create('usuario', 'servidor.com')
->usePrivateKey('~/.ssh/id_rsa')
->execute([
'cd /var/www/project',
'git pull origin main',
'php artisan migrate',
'php artisan cache:clear'
]);
Manejando los errores
Si por algún motivo la ejecución de los comandos devuelve un error, podemos monitorear lo que está pasando gracias a los métodos isSuccessful() y getOutput()
$result = Ssh::create('usuario', 'servidor.com')
->usePrivateKey('~/.ssh/id_rsa')
->execute([
'cd /var/www/project',
'git pull origin main',
'php artisan migrate',
'php artisan cache:clear'
]);
if !$result->isSuccessfull {
dd($result->getOutput())
}
Conclusión
Gracias a spatie/ssh podemos ahorrar muchísimo tiempo siempre un cuando necesitemos realizar conexiones ssh desde nuestra aplicación, ya sea para revisar tareas simples o para automatizar procesos.
Para más información acerca del uso del paquete, consultar la documentación oficial.
Fuentes: Documentación oficial de spatie/ssh