PHP executando um script de shell para scp
Pergunta
Quero usar PHP para executar um script de shell que envia um arquivo do servidor 1 para o servidor 2.Tenho a chave pública do servidor 1 gravada no servidor 2authorized_keys e funciona perfeitamente.
Por alguma razão, o script a seguir não envia o arquivo do servidor 1 para o 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:
Então, quando eu executo de scp.sh
no terminal, tudo funciona bem - o arquivo é realmente enviado e recebido.
Mas quando eu vou para http://server1.com/sendfile.php
e pressione o botão, o arquivo php realmente executa o arquivo shell (confirmei isso colocando instruções echo antes e depois do comando scp), mas o arquivo nunca é recebido com sucesso por server2.com
Alguém sabe por que isso pode acontecer?
Solução
Marc B respondeu minha pergunta com um comentário... postando aqui
você adicionou a chave às chaves_autorizadas da conta do servidor web?Só porque funciona a partir de um shell rodando sob SUAS permissões não significa absolutamente nada para um shell rodando sob o ID do servidor web.– Marc B 9 de janeiro às 19:47
ooooh simhhhh... esqueci disso - João, 9 de janeiro às 19:57
sim, funcionou.obrigado Marcos!– João 9 de janeiro às 20h42