Heim  >  Artikel  >  Backend-Entwicklung  >  Erfahren Sie, wie Sie das Paramiko-Modul in Python teilen

Erfahren Sie, wie Sie das Paramiko-Modul in Python teilen

黄舟
黄舟Original
2017-08-23 11:38:481305Durchsuche

Dieser Artikel teilt hauptsächlich die Lernmaterialien des Python-Paramiko-Moduls. Es hat einen gewissen Referenzwert.

Paramiko ist ein in der Python-Sprache geschriebenes Modul, das das SSH2-Protokoll unterstützt Verschlüsselung und Authentifizierung für die Verbindung zu Remote-Servern. paramiko unterstützt Linux, Solaris, BSD, MacOS X, Windows und andere Plattformen, um über SSH eine Verbindung von einer Plattform zur anderen herzustellen. Mit diesem Modul können Sie ganz einfach eine SSH-Verbindung und ein SFTP-Protokoll für die SFTP-Dateiübertragung durchführen.

Lassen Sie uns zunächst die folgenden Substantive klären:

SSHClient: Pakete Kanal, Transport, SFTPClient
Kanal: ist ein Typ Socket, ein sicherer SSH-Übertragungskanal;
ist eine verschlüsselte Sitzung (aber die Sitzung eines solchen Objekts wurde nicht eingerichtet) und erstellt einen verschlüsselten Tunnel. Dieser Tunnel wird als Kanal bezeichnet Sitzung:
ist das Objekt, das die Verbindung zwischen Client und Server aufrechterhält. Verwenden Sie connect()/start_client()/start_server(), um die Sitzung zu starten.

Herunterladen und installieren Sie


pycrypto. Da das Paramiko-Modul intern von pycrypto abhängt, laden Sie zuerst pycrypto herunter und installieren Sie es


pip3 install pycrypto

pip3 install paramiko


Spezifische Modulverwendung

SSHClient:

Remoteverbindungen werden in zwei Typen unterteilt: (1) Verbindung basierend auf Benutzername und Passwort (2) Verbindung basierend auf öffentlicher Schlüssel

Durch die Verwendung von Paramiko für den Remote-Betrieb gibt es im Wesentlichen zwei Arten: (1) Nur SSHClient verwenden (2) Erstellen Sie selbst einen Transport

Verbinden Sie sich basierend auf Benutzername und Passwort


SSHClient kapselt Transport
import paramiko
 
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='host', port=22, username='root', password='123')
# 执行命令  stdout命令结果,stderr错误
stdin, stdout, stderr = ssh.exec_command('ls')
# 获取命令结果 
result = stdout.read()
# 关闭连接
ssh.close()


Verbindung basierend auf öffentlichem und geheimem Schlüssel
import paramiko
 
transport = paramiko.Transport(('hostname', 22))
transport.connect(username='root', password='123')
 
ssh = paramiko.SSHClient()
ssh._transport = transport
 
stdin, stdout, stderr = ssh.exec_command('df')
print(stdout.read())
 
transport.close()


SSHClient kapselt Transport
import paramiko
 
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='host', port=22, username='root', key=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
# 关闭连接
ssh.close()


import paramiko
 
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
transport = paramiko.Transport(('hostname', 22))
transport.connect(username='wupeiqi', pkey=private_key)
ssh = paramiko.SSHClient()
ssh._transport = transport
stdin, stdout, stderr = ssh.exec_command('df')
transport.close()

SFTPClient: wird verwendet, um eine Verbindung zum Remote-Server herzustellen und Upload- und Download-Funktionen auszuführen.

Upload und Download basierend auf Benutzername und Passwort


Upload und Download basierend auf öffentlichem Schlüssel
import paramiko
 
transport = paramiko.Transport(('hostname',22))
transport.connect(username='root',password='123')
 
sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py')
# 将remove_path 下载到本地 local_path
sftp.get('remove_path', 'local_path')
 
transport.close()


Demo: Remote-Befehlsausführung und Datei-Upload implementieren
import paramiko
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')

transport = paramiko.Transport(('hostname', 22))
transport.connect(username='root', pkey=private_key )
 
sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py')
# 将remove_path 下载到本地 local_path
sftp.get('remove_path', 'local_path')
 
transport.close()


Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie das Paramiko-Modul in Python teilen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn