博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 3 并发编程多进程 paramiko 模块
阅读量:6848 次
发布时间:2019-06-26

本文共 2442 字,大约阅读时间需要 8 分钟。

python 3 paramiko模块

paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。

在python3中安装

pip3 install paramiko

pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto #在python2中pip3 install pycryptopip3 install paramiko注:如果在安装pycrypto2.0.1时发生如下错误        command 'gcc' failed with exit status 1...可能是缺少python-dev安装包导致如果gcc没有安装,请事先安装gcc
在python2安装

 SSHClient

用于连接远程服务器并执行基本命令:

import paramiko# 创建SSH对象ssh = paramiko.SSHClient()# 允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接服务器ssh.connect(hostname='10.100.12.251', port=22, username='root', password='123456')# 执行命令stdin, stdout, stderr = ssh.exec_command('df')# 获取命令结果result = stdout.read()print(result.decode('utf-8'))# 关闭连接ssh.close()
基于用户名密码连接
import paramikoprivate_key = paramiko.RSAKey.from_private_key_file('/tmp/id_rsa')transport = paramiko.Transport(('10.100.12.251', 22))transport.connect(username='root', pkey=private_key)ssh = paramiko.SSHClient()ssh._transport = transportstdin, stdout, stderr = ssh.exec_command('df')result=stdout.read()print(result.decode('utf-8')) transport.close()
SSHClient 封装 Transport
import paramikofrom io import StringIOkey_str = """-----BEGIN RSA PRIVATE KEY-----xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-----END RSA PRIVATE KEY-----"""private_key = paramiko.RSAKey(file_obj=StringIO(key_str))transport = paramiko.Transport(('10.100.12.251', 22))transport.connect(username='root', pkey=private_key)ssh = paramiko.SSHClient()ssh._transport = transportstdin, stdout, stderr = ssh.exec_command('df')result = stdout.read()print(result.decode('utf-8'))transport.close()print(result)
基于私钥字符串进行连接 

SFTPClient

用于连接远程服务器并执行上传下载

import paramiko transport = paramiko.Transport(('10.100.12.251',22))transport.connect(username='root',password='123456')sftp = paramiko.SFTPClient.from_transport(transport)# 将location.py 上传至服务器 /tmp/test.pysftp.put('/tmp/id_rsa', '/etc/test.rsa')# 将remove_path 下载到本地 local_pathsftp.get('remove_path', 'local_path') transport.close()
基于用户名密码上传下载
import paramiko transport = paramiko.Transport(('10.100.12.251',22))transport.connect(username='root',password='xxx') sftp = paramiko.SFTPClient.from_transport(transport)# 将location.py 上传至服务器 /tmp/test.pysftp.put('/tmp/id_rsa', '/etc/test.rsa')# 将remove_path 下载到本地 local_pathsftp.get('remove_path', 'local_path') transport.close()
基于公钥密钥上传下载

 

转载于:https://www.cnblogs.com/qiangyuge/p/7450395.html

你可能感兴趣的文章
浅谈SQL SERVER中事务的ACID
查看>>
设置expire_logs_days自动删除
查看>>
Nginx安装过程(Linux)
查看>>
Redis中中文内容显示十六进制字符串处理
查看>>
去硬件、拼内容,IT巨头们的下一站?
查看>>
我的友情链接
查看>>
2015年下半年系统集成项目管理工程师培训感想
查看>>
命令模式
查看>>
Python精简笔记-[1] 从安装到编辑器的使用
查看>>
VMwareESX/ESXi 精简置备(thin)与厚置备(thick)虚拟机磁盘之间转换
查看>>
迭代器模式
查看>>
github 仓库重命名(改名)
查看>>
web前端性能优化
查看>>
为基恩士 TM-3000 激光测量仪定制的测量管理系统
查看>>
java反射机制+工厂模式+配置文件----->在谈到spring配置文件
查看>>
linux 操作系统进程系列
查看>>
持续化集成工具jenkins环境搭建及配置
查看>>
CDN架构以及原理分析
查看>>
2016年3月7日作业
查看>>
HDFS DataBlockScanner
查看>>