python模块----paramicko模块 (ssh远程主机并命令或传文件)

paramiko模块

  • paramicko模块是非标准库模块,需要pip下载
  • paramicko:模拟ssh登陆linux主机,也有上传下载功能。ansible自动化部署软件底层就有应用paramicko模块

第一步:pip 下载包

pip install paramiko

ssh 连接linux主机运行bash命令

import paramiko
hostname = '192.168.137.3'
port = 22
username = 'root'
password = '123'
ssh = paramiko.SSHClient()
# 自动添加策略,保存服务器的主机名和密钥信息,如果不添加,那么不再本地know_hosts文件中记录的主机将无法连接
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=hostname,port=port,username=username,password=password)
stdin,stdout,stderr = ssh.exec_command("可用命令")
print(stdout.read().decode('utf-8'))

通过paramiko模块连接主机上传

import paramiko
hostname = '192.168.137.3'
port = 22 
username = 'root'
password = '123'
t=paramiko.Transport((hostname,port))
t.connect(username=username,password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(r'/root/ping.sh', '/root/ping.sh')  #不同于scp必须为要传输的文件重新赋名
t.close()

通过paramiko模块连接主机下载

import paramiko
hostname =  '192.168.137.3'
port = 22
username = 'root'
password = '123'
t=paramiko.Transport((hostname,port))
t.connect(username=username,password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/root/test3.yml', r'C:\Users\51963\Desktop\test3.yml')
t.close()

基于公钥上传下载

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa') 

transport = paramiko.Transport(('192.168.1.21', 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()
posted @ 2020-05-06 15:18  du-z  阅读(394)  评论(0编辑  收藏  举报