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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top