Я следовал за шагами здесь http://jessenoller.com/2009/02/05/ssh-programming-with-paramiko-completely-different/
для подключения к моему серверу через ssh через Python. Я могу подключиться нормально и отправлять команды.
Однако, когда я запускаю stderr.readlines (), он каждый раз показывает мне сообщение об ошибке ниже, даже если кажется, что команда выполнена правильно. Я закрыл соединение и перезапустил Python, и все тот же результат.
Вот пример Python:
>>> stdin, stdout, stderr = myssh.exec_command("xyz")
>>> stderr.readlines()
['which: no php in (/usr/bin:/bin:/usr/sbin:/sbin:/big/dom/mydomain/pear/drush)\n', '/big/dom/mydomain/pear/drush/drush: line 89: exec: : not found\n', 'bash: xyz: command not found\n']
У меня установлен drush, и, кажется, он работает нормально. Если я введу «какой php» на сервере, мне сообщат, где он находится, вместо сообщения об ошибке выше. Я послал некоторые другие команды, чтобы целенаправленно получить сообщение об ошибке, чтобы увидеть, если оно что-то очистило. Вместо этого он прикрепил вещи в конце.
После сообщения об ошибке я пошел и посмотрел на указанный файл drush. Вот строка 89:
exec "$php" $php_options "$SCRIPT_PATH" --php="$php" --php-options="$php_options" "$@"
Я полагаю, что команда "Какие php" происходит из переменной $ php в чанке над этой строкой
if [ ! -z "$DRUSH_PHP" ] ; then
# Use the DRUSH_PHP environment variable if it is available.
php="$DRUSH_PHP"
else
# Default to using the php that we find on the PATH.
# Note that we need the full path to php here for Dreamhost, which behaves oddly. See http://drupal.org/node/662926
php=`which php`
# We check for a command line (cli) version of php, and if found use that.
which php-cli >/dev/null 2>&1
if [ "$?" = 0 ] ; then
php=`which php-cli`
fi
# On MSYSGIT, we need to use "php", not the full path to php
if [ ! -z "$MSYSTEM" ] && [ "x${MSYSTEM:0:5}" = "xMINGW" ] ; then
php="php"
fi
fi
Полный текст файла находится здесь: http://pastebin.com/29AXmHKF
Я получаю ту же ошибку, если пытаюсь выполнить команду drush. Но команды drush работают нормально, если я просто захожу на сервер напрямую без использования python / paramiko.