Запустите команду с другого сервера, используя ssh2_exec () - php - PullRequest
0 голосов
/ 22 марта 2012

Есть 2 сервера (сервер A и сервер B). Сервер A отправит команду, а сервер B ее выполнит.

Я попробовал приведенный ниже код, запущенный с сервера A, чтобы дать команду серверу B выполнить работу, и она работает успешно:

$connection = ssh2_connect('server.com', 22);
ssh2_auth_password($connection, 'username', 'password');

ssh2_exec($connection, 'mv /var/www/test.php /root');

var_dump($connection);

из приведенного выше кода, он переместит test.php в корневую папку. Проблема возникает, если я пытаюсь запустить файл .sh, используя тот же код, он, кажется, не работает вообще. Ниже приведен пример кода для запуска .sh файла

$connection = ssh2_connect('serverB.com', 22);
ssh2_auth_password($connection, 'username', 'password');

ssh2_exec($connection, './var/www/bbb_clean.sh');

var_dump($connection);

Если я запускаю bbb_clean.sh вручную с сервера B, он работает. Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 27 марта 2012

Я бы попытался использовать phpseclib, чистую реализацию PHP SSH , и включить ведение журнала, чтобы увидеть, что происходит. например.

<?php
include('Net/SSH2.php');
define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->getLog();
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...