Pregunta

Quiero usar PHP para ejecutar un script de shell que envía un archivo desde el servidor 1 al servidor 2. Tengo la clave pública del servidor 1 escrita en el servidor 2 Authorized_Keys y funciona perfectamente.

Por alguna razón, el siguiente script no envía realmente el archivo desde el servidor 1 al servidor 2:

// This is a webpage at http://server1.com/sendfile.php
<?php
if($_POST['a'])
{
        echo '<pre>';
        echo passthru('./scp.sh');
        echo '</pre>';
}
?>

<form method="post">
<button name="a" value="Af">Send File</button>
</form>

//This is the contents of scp.sh
scp ../dbexport/db.txt someuser@server2.net:

Entonces, cuando ejecuto de scp.sh de terminal, todo funciona bien: el archivo realmente se envía y recibe.

Pero cuando voy a http://server1.com/sendfile.php y presiona el botón, el archivo PHP en realidad ejecuta el archivo Shell (lo confirmé al poner las declaraciones de ECHO antes y después del comando SCP), pero el archivo nunca es recibido con éxito por server2.com

¿Alguien sabe por qué podría ser esto?

¿Fue útil?

Solución

Marc B respondió a mi pregunta con un comentario ... Publicando aquí

¿Añadiste la clave a la cuenta de la cuenta de WebServer's Authored_Keys?Solo porque funciona de una concha que corre bajo sus permisos significa absolutamente nada a un shell que se ejecuta bajo la identificación del servidor web.- Marc B Ene 9 a las 19:47

OOOOH Yeahhhhh .... Olvidé eso, Juan 9 de enero a las 19:57

Sí, funcionó.¡Gracias Marc!- Juan 9 de enero a las 20:42

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top