Выполнение команд оболочки через PHP? - PullRequest
1 голос
/ 30 октября 2019

Я пытаюсь выполнить ssh на удаленном сервере, чтобы проверить, существует ли определенный файл.

Я могу выполнить команду ssh в командной строке, но всякий раз, когда я пытаюсь выполнить сценарий, он ничего не возвращает. / Мне нужно набрать «выход» и нажать клавишу ввода, чтобы вернуться в командную строку.

Шаги:

  1. ssh root@website.com
  2. cd. .
  3. ls ATMEXTRACT

Я поместил все эти команды в выходы, чтобы они выглядели так:

$output = shell_exec("ssh root@website.com");
$ouput1 = shell_exec("cd ..");
$ouput2 = shell_exec("ls *ATMEXTRACT*");

echo($output2);

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

1 Ответ

0 голосов
/ 30 октября 2019

Вот что вы делаете в интерактивном режиме:

  • Запуск ssh root@website.com в текущей оболочке
    • Ввод cd .. в ssh
    • Ввод ls *ATMEXTRACT*в ssh
    • Ввод exit в ssh, который теперь выходит
  • Найти себя в исходной оболочке

Вот что вы делаете в своем скрипте:

  • Запустите ssh root@website.com в новой оболочке и выйдите из нее
  • Запустите cd .. во второй оболочке и выйдите из нее
  • Запустите ls *ATMEXTRACT* в третьей оболочке и выйдите из нее

Вы можете попробовать открыть и взаимодействовать с командой ssh, но вы также можете просто избавить себя от проблем и использовать команду sshЛинейная функция для указания команд для запуска:

$output = shell_exec("ssh root@website.com 'cd .. && ls *ATMEXTRACT*'");

Имейте в виду, что это может произойти сбой из сценария сайта PHP, потому что вам нужно настроить механизм аутентификации. Это верно, даже если ssh root@website.com подключается без пароля, когда вы вручную входите на веб-сервер и пробуете его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...