SSH соединение с Python 3.0 - PullRequest
7 голосов
/ 05 июня 2009

Как я могу установить SSH-соединение в Python 3.0? Я хочу сохранить файл на удаленном компьютере, на котором настроен SSH без пароля.

Ответы [ 6 ]

12 голосов
/ 05 июня 2009

Я рекомендую вызывать ssh как подпроцесс. Это надежный и портативный.

import subprocess
proc = subprocess.Popen(['ssh', 'user@host', 'cat > %s' % filename],
                        stdin=subprocess.PIPE)
proc.communicate(file_contents)
if proc.retcode != 0:
    ...

Вам придется беспокоиться о цитировании целевого имени файла. Если вы хотите больше гибкости, вы можете даже сделать это:

import subprocess
import tarfile
import io
tardata = io.BytesIO()
tar = tarfile.open(mode='w:gz', fileobj=tardata)
... put stuff in tar ...
proc = subprocess.Popen(['ssh', 'user@host', 'tar xz'],
                        stdin=subprocess.PIPE)
proc.communicate(tardata.getvalue())
if proc.retcode != 0:
    ...
1 голос
/ 09 августа 2013

Первый:

Два шага для входа через ssh без пароля

в вашем терминале

[macm@macm ~]$  ssh-keygen
[macm@macm ~]$  ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@192.168.1.XX <== change

Теперь с питоном

from subprocess import PIPE, Popen

cmd = 'uname -a'
stream = Popen(['ssh', 'root@192.168.1.XX', cmd],
                    stdin=PIPE, stdout=PIPE)

rsp = stream.stdout.read().decode('utf-8')
print(rsp)
1 голос
/ 05 июня 2009

Вы хотите, чтобы все функции ssh были реализованы в виде библиотеки python? Посмотрите на paramiko, хотя я думаю, что он не перенесен на Python 3.0 (пока?).

Если вы можете использовать существующую установку ssh, вы можете использовать способ subprocess, описанный Дитрихом, или (другим способом) вы также можете использовать pexpect ( веб-сайт здесь ).

0 голосов
/ 06 мая 2013

libssh2 отлично работает для Python 3.x.
Смотрите эту статью переполнения стека Как отправить файл, используя scp, используя python 3.2?

0 голосов
/ 28 февраля 2011

Я написал привязки Python для libssh2 , которые работают на Python 2.4, 2.5, 2.6, 2.7 и 3 .

0 голосов
/ 05 июня 2009

Это может занять небольшую работу, потому что " twisted: conch " не имеет варианта 3.0.

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