2016-03-16 5 views
1

Я пытаюсь получить некоторые команды, выполненные на удаленном устройстве. Я использую открытый и закрытый ключ для подключения к удаленному устройству.выполнить сценарий оболочки с php

На моем сервере у меня есть только что ввести: ssh username @ remote_device command, и я получаю его результат. Поэтому я хочу сделать это на php-странице.

Я пробовал разные методы, и это не сработало для меня.

1 -

$cmdline = escapeshellcmd("ssh [email protected]_device command"); 
system($cmdline); 

2 - выполнение скрипт на сервере

script.sh:

#!/bin/bash 

output=$(ssh [email protected]_device command) 
echo "$output" >> test.txt 

exit 0 

PHP код:

passthru('./script.sh',$result); 
echo $result ; 

я получил результат отправки по моему сценарию, но n ot результат команды ssh в нем. Когда я выполняю скрипт напрямую, у меня есть результат.

3-

system ("ssh [email protected]_device command > test.txt"); 
system ("ssh -i /home/nagios/.ssh/id_rsa -o 'StrictHostKeyChecking no' [email protected]_device command' > test.txt"); 

текстовый файл остается пустым

Что i'am делать неправильно?

ответ

0

Вы можете использовать shell_exec(), например

$output = shell_exec('./deploy.sh'); 
echo "<pre>".$output."</pre>"; 

Php имеет хорошую документацию по нему http://php.net/manual/en/function.shell-exec.php надеюсь, что это помогает :)

+0

я получил тот же пустой результат :( – ayoubitou

1

Я нашел решение, вот оно:

$host = "ip_address"; 
$port = 22; 
$conn = ssh2_connect($host, $port); 
$username = "username"; 
$pub_key = "/path/to/key/.ssh/id_rsa.pub"; 
$pri_key = "/path/to/key/.ssh/id_rsa"; 
if(ssh2_auth_pubkey_file( 
    $conn, 
    $username, 
    $pub_key, 
    $pri_key)) 
{ 
    echo "Authentication succeeded"; 
    $stdout_stream = ssh2_exec($conn, 'ping ip_address rapid routing-instance XXXXXXXXX'); 
    sleep(1); 
    stream_set_blocking($stdout_stream, true); 
    $stream_out = ssh2_fetch_stream($stdout_stream, SSH2_STREAM_STDIO); 
    echo '<pre>'; 
    echo stream_get_contents($stream_out); 
    echo '</pre>'; 

} 
else 
{ 
    echo "Authentication failed "; 
} 
Смежные вопросы