Ejecutando comandos en un servidor desde PHP con SSH

Estos días estoy trabajando en una aplicación web para la gestión de usuarios y cursos. Esta aplicación está hecha en PHP con una base de datos MYSQL, crea usuarios en un servidor LDAP y tambíen crea las homes de estos usuarios en otro servidor. Hoy voy a explicar como crear esas homes en un servidor que no es el de la aplicación. Otro día explicare todo el tema de PHP con LDAP.

Bien, lo primero que vamos a hacer es instalar el soporte de SSH para PHP en Ubuntu 12.04 en adelante.

sudo apt-get install libssh2-1-dev libssh2-php

Ahora comprobamos si es posible la conexión SSH al servidor

if(!($con = ssh2_connect("nombre servidor", 22))){

echo "No se puede iniciar una conexión SSH";}

Si se puede, creamos una conexión mediante usuario y contraseña, hay que ser conscientes de que esta información es sensible y estará en nuestro código.

else {
 if(!ssh2_auth_password($con, "root", "******")) {

echo "error en la autenticación";}

Si la conexión ha sido correcta ejecutamos los comandos pertinentes, en mi caso creo una carpeta que será  la home del usuario y le pongo a ese usuario de propietario, que viene dado de un formulario

else {

if(!($stream = ssh2_exec($con, "mkdir /volume1/users_homes/'$nick' && chown '$nick'@saregune:users /volume1/users_homes/'$nick'" )) ){
 echo "error al ejecutar los comandos";
 } else{
 echo  "home creada" ;
 }
 }
 }

 

 

7 comentarios sobre “Ejecutando comandos en un servidor desde PHP con SSH

    • admin Autor del artículoContestar

      El @saregune es una cosa específica de nuestra red y lo de users es el grupo.Al final es simplemente la ejecución del comando chown.

    • raul Autor del artículoContestar

      Buenas,
      si es posible, tienes que concatenar los comandos con &&.

      Un saludo.

  1. Mikel Contestar

    Hola seria posible insertar toda esta tarea en una funcion he ejecutarla desde un boton?
    Me gustaria desde el servidor iniciar reproducciones de vlc en otros equipos de la red con el comando cvlc…
    seria posible?
    Gracias

    • raul Autor del artículoContestar

      Buenas,
      sí sería posible. La ejecución desde el botón ni no quieres que se refresque la página tendría que ser mediante Javascript.

      Un saludo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *