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

Partage d'apprentissage sur le module paramiko en python

黄舟
黄舟original
2017-08-23 11:38:481305parcourir

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()
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()
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()
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()

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()
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()
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!

Déclaration:
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