PHP eseguendo uno script di shell su SCP
Domanda
Voglio usare PHP per eseguire uno script di shell che invia un file dal server 1 al server 2. Ho il tasto pubblico Server 1 scritto sul server 2 autorizzato_Keys e funziona perfettamente.
Per qualche motivo il seguente script non invia effettivamente il file dal server 1 al server 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:
.
Quindi quando eseguito da scp.sh
dal terminale, tutto funziona bene - il file viene inviato e ricevuto.
Ma quando vado a http://server1.com/sendfile.php
e premi il pulsante, il file PHP esegue effettivamente il file shell (l'ho confermato inserendo le istruzioni di eco prima e dopo il comando SCP), ma il file non viene mai ricevuto correttamente da Server2.com
Qualcuno sa perché questo potrebbe essere?
Soluzione
Marc B ha risposto alla mia domanda con un commento ... Pubblicazione qui
Hai aggiunto la chiave per gli autorizzati degli account del webserver?Solo perché funziona da una shell che corre sotto le tue autorizzazioni significa assolutamente nulla per una shell che corre sotto l'ID di Webserver.- Marc B 9 gennaio alle 19:47
ooooh yeahhhhhh .... Ho dimenticato questo - John Jan 9 alle 19:57
YUP ha funzionato.Grazie Marc!- Giovanni 9 gennaio alle 20:42