Maison > développement back-end > Tutoriel Python > Partage d'apprentissage sur le module paramiko en python

Partage d'apprentissage sur le module paramiko en python

黄舟
Libérer: 2017-08-23 11:38:48
original
1399 Les gens l'ont consulté

Cet article partage principalement le matériel d'apprentissage du module python paramiko avec tout le monde. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

paramiko est un module écrit en langage python. cryptage et authentification pour se connecter aux serveurs distants. paramiko prend en charge Linux, Solaris, BSD, MacOS X, Windows et d'autres plates-formes pour se connecter d'une plate-forme à une autre via SSH. En utilisant ce module, vous pouvez facilement effectuer une connexion ssh et le protocole sftp pour le transfert de fichiers sftp.

Plarifions d'abord les noms suivants :

SSHClient : packages Channel, Transport, SFTPClient
Channel : est un type Socket, un canal de transmission SSH sécurisé
Transport : est une session cryptée (mais la session d'un tel objet n'a pas été établie), et crée un tunnel crypté C'est ce qu'on appelle Channel ;
Session : est l'objet qui maintient la connexion entre le client et le serveur. Utilisez connect()/start_client()/start_server() pour démarrer la session.

Télécharger et installez

pycrypto Puisque le module paramiko dépend en interne de pycrypto, téléchargez et installez d'abord pycrypto


pip3 install pycrypto

pip3 install paramiko

Utilisation spécifique du module

SSHClient :

Les connexions à distance sont divisées en deux types : (1) connexion basée sur le nom d'utilisateur et le mot de passe (2) connexion basée sur clé publique

En utilisant paramiko pour le fonctionnement à distance, il existe essentiellement deux types : (1) Utilisez uniquement SSHClient (2) Créez vous-même un transport

Connectez-vous en fonction du nom d'utilisateur et du mot de passe


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()
Copier après la connexion
SSHClient encapsule Transport


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()
Copier après la connexion
Se connecter en fonction de la clé publique et de la clé secrète


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()
Copier après la connexion
SSHClient encapsule Transport


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()
Copier après la connexion

SFTPClient :

est utilisé Connectez-vous au serveur distant et effectuez les fonctions de téléchargement et de téléchargement.

Téléchargement et téléchargement basés sur le nom d'utilisateur et le mot de passe


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()
Copier après la connexion
Téléchargement et téléchargement basés sur la clé publique


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()
Copier après la connexion
Démo : implémenter l'exécution de commandes à distance et le téléchargement de fichiers


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal