PHP ejecutando un script de shell a SCP
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?
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