python自动化运维五:paramiko
p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }
paramiko是基于python实现的SSH2远程安全连接,支持认证以及密钥方式,可以实现远程命令执行,文件传输,中间SSH代理等功能。也就是采用SSH的方式进行远程访问。SSH登陆的方式可以参考之前的一片帖子:http://www.cnblogs.com/zhanghongfeng/p/7749489.html
下面来看一个远程登陆的例子如下:
def paramiko_function_try():
hostname="192.168.0.9"
username='root'
password='root'
paramiko.util.log_to_file('syslogin.log')
ssh=paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.connect(hostname=hostname,username=username,password=password)
stdin,stdout,stderr=ssh.exec_command('ls -al')
print stdout.read()
ssh.close()
p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }
执行结果:
total 64
drwx------ 10 root root 4096 Oct 29 10:02 .
drwxr-xr-x 22 root root 4096 Jul 9 16:59 ..
-rw------- 1 root root 4143 Oct 29 10:14 .bash_history
-rw-r--r-- 1 root root 3106 Feb 20 2014 .bashrc
drwx------ 5 root root 4096 Aug 31 21:47 .cache
drwx------ 4 root root 4096 Jul 26 10:47 .config
drwx------ 3 root root 4096 Jul 9 15:59 .dbus
drwx------ 2 root root 4096 Jul 9 16:23 .gvfs
drwxr-xr-x 3 root root 4096 Jul 26 11:23 .local
drwxr-xr-x 2 root root 4096 Jul 26 11:33 .pip
-rw-r--r-- 1 root root 140 Feb 20 2014 .profile
drwxr-xr-x 3 root root 4096 Jul 26 11:41 .python-eggs
drwx------ 2 root root 4096 Oct 27 23:11 .ssh
-rw-r--r-- 1 root root 0 Oct 29 10:02 test.txt
-rw------- 1 root root 5436 Oct 27 22:11 .viminfo
从syslogin.log中也可以查看整个建链的过程。
DEB
[20171029-20:41:29.564] thr=1 paramiko.transport: Kex agreed:
ecdh-sha2-nistp256
DEB
[20171029-20:41:29.564] thr=1 paramiko.transport: HostKey agreed:
ecdsa-sha2-nistp256
DEB
[20171029-20:41:29.565] thr=1 paramiko.transport: Cipher agreed:
aes128-ctr
DEB
[20171029-20:41:29.565] thr=1 paramiko.transport: MAC agreed:
hmac-sha2-256
DEB
[20171029-20:41:29.565] thr=1 paramiko.transport: Compression
agreed: none
DEB
[20171029-20:41:29.627] thr=1 paramiko.transport: kex engine
KexNistp256 specified hash_algo <built-in function openssl_sha256>
DEB
[20171029-20:41:29.628] thr=1 paramiko.transport: Switch to new
keys ...
DEB
[20171029-20:41:29.639] thr=2 paramiko.transport: Trying discovered
key 267fb51feeeaf45abbf324467ee574d8 in /root/.ssh/id_rsa
DEB
[20171029-20:41:29.676] thr=1 paramiko.transport: userauth is OK
INF
[20171029-20:41:29.808] thr=1 paramiko.transport: Authentication
(publickey) successful!
DEB
[20171029-20:41:29.841] thr=2 paramiko.transport: [chan 0] Max
packet in: 32768 bytes
DEB
[20171029-20:41:30.281] thr=1 paramiko.transport: [chan 0] Max
packet out: 32768 bytes
DEB
[20171029-20:41:30.281] thr=1 paramiko.transport: Secsh channel 0
opened.
DEB
[20171029-20:41:30.330] thr=1 paramiko.transport: [chan 0] Sesch
channel 0 request ok
DEB
[20171029-20:41:30.356] thr=1 paramiko.transport: [chan 0] EOF
received (0)
DEB
[20171029-20:41:30.357] thr=1 paramiko.transport: EOF in transport
thread
接下来介绍下connect方法中的参数:
hostname:
连接的目标主机地址
port:端口,默认为22
username:校验的用户名
password:
密码用于身份校验或解锁私钥
pkey:私钥方式用于身份验证
key_filename:一个文件名或文件名的列表,用于私钥的身份验证
timeout:
可选的超时时间的TCP连接
allow_agent:
设置为false用于禁用连接到SSH代理
look_for_keys:设置为False用来禁用在~/.ssh中搜索私钥文件
compress:设置为True时打开压缩。
p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }
前面只是连接到了远程电脑并执行命令,如果要上传下载文件的话还是要采用SFTP的方法。
示例代码如下,首先要创造一个已连通的SFTP客户端通道。然后采用put上传get下载的方法进行文件的上传和下载。注意的是put的时候本地路径为第一个参数,远端路径为第二个参数。get的时候远端路径为第一个参数,本地路径为第二个参数。
def SFTP_function_try():
t=paramiko.Transport(("192.168.0.9",22))
t.connect(username='root',password='root')
sftp=paramiko.SFTPClient.from_transport(t)
localpath='/home/zhf/zhf/python_prj/auto_manintance/syslogin.log'
remotepath='/home/zhf/syslogin.log'
sftp.put(localpath,remotepath)
localpath='/home/zhf/zhf/python_prj/auto_manintance/log.log'
remotepath='/home/root'
sftp.get(remotepath,localpath)
p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }
在前面介绍SSH的时候讲过免密码登陆的方式,现在我们来看下通过paramiko如何免密码,通过证书登陆
示例代码如下:
def paramiko_function_auto():
hostname="192.168.0.9"
username='root'
password='root'
paramiko.util.log_to_file('syslogin.log')
ssh=paramiko.SSHClient()
ssh.load_system_host_keys()
privatekey=os.path.expanduser('~/.ssh/id_rsa')
key=paramiko.RSAKey.from_private_key_file(privatekey)
ssh.connect(hostname=hostname,username=username,pkey=key)
stdin,stdout,stderr=ssh.exec_command('ls -al')
print stdout.read()
ssh.close()
python自动化运维五:paramiko的更多相关文章
- python自动化运维五:pexpect
p { margin-bottom: 0.25cm; line-height: 120% } a:link { } pexpect是expect的封装,可以实现ssh,ftp,passwd,telne ...
- 【目录】Python自动化运维
目录:Python自动化运维笔记 Python自动化运维 - day2 - 数据类型 Python自动化运维 - day3 - 函数part1 Python自动化运维 - day4 - 函数Part2 ...
- Python自动化运维的职业发展道路(暂定)
Python职业发展之路 Python自动化运维工程 Python基础 Linux Shell Fabric Ansible Playbook Zabbix Saltstack Puppet Dock ...
- Python自动化运维:技术与最佳实践 PDF高清完整版|网盘下载内附地址提取码|
内容简介: <Python自动化运维:技术与最佳实践>一书在中国运维领域将有“划时代”的重要意义:一方面,这是国内第一本从纵.深和实践角度探讨Python在运维领域应用的著作:一方面本书的 ...
- Python自动化运维 技术与最佳实践PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:7bl4 一.内容简介 <python自动化运维:技术与最佳实践>一书在中国运维领域将有"划时代"的重要意义:一方面,这是国内第一本从纵.深和实践角度探 ...
- python自动化运维之CMDB篇-大米哥
python自动化运维之CMDB篇 视频地址:复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/1Oj_sglTi2P1CMjfMkYKwCQ ...
- Day1 老男孩python自动化运维课程学习笔记
2017年1月7日老男孩python自动化运维课程正式开课 第一天学习内容: 上午 1.python语言的基本介绍 python语言是一门解释型的语言,与1989年的圣诞节期间,吉多·范罗苏姆为了在阿 ...
- python自动化运维学习第一天--day1
学习python自动化运维第一天自己总结的作业 所使用到知识:json模块,用于数据转化sys.exit 用于中断循环退出程序字符串格式化.format字典.文件打开读写with open(file, ...
- python自动化运维篇
1-1 Python运维-课程简介及基础 1-2 Python运维-自动化运维脚本编写 2-1 Python自动化运维-Ansible教程-Ansible介绍 2-2 Python自动化运维-Ansi ...
随机推荐
- python 基础之字符编码和文件处理
一.字符编码 (1)计算机基础知识 (2)python 解释器执行py文件的原理 <1>python 解释器启动 <2>python解释器相当于一个文本编辑器,打开txt.py ...
- yum仓库管理
yum在线管理 rpm包的管理分为 rpm命令管理和yum在线管理,rpm命令管理由于可能需要解决各种依赖问题,在安装软件的时候可能显得比较麻烦,然而,yum在线管理正好和它相反.Yum(全称为 Ye ...
- Python编码_ASCII_Unicode_UTF-8
获取一个字符的ASCII码值,使用内置函数 ord(),ASCII码占一个字节 ascii不能存中文 >>> # A 和 a 分别的对应的ASCII码值是 >>> ...
- 框架应用:Spring framework (一) - IoC技术
IoC概念以及目标 IoC就是让原本你自己管理的对象交由容器来进行管理,其主要的目的是松耦合. IoC发展史 既然IoC的目标是为了松耦合,那它怎么做到的? 最后目标:降低对象之间的耦合度,IoC技术 ...
- iOS开发-AFNetworking参数和多文件同时上传【多文件上传】
1. 前言 在项目开发中,我们经常需要上传文件,例如:上传图片,上传各种文件,而有时也需要将参数和多个文件一起上传,不知道大家的项目中遇到了没有,我在最近的项目中,就需要这样的一个功能:同时上传参数. ...
- JavaScript 框架------------AngularJS(上)
一.简单了解一下AngularJS AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. AngularJS 通过 指令 扩展了 ...
- 详解MySQL基准测试和sysbench工具
前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处, ...
- 关于JetBrains CLion 激活 (CLion License Activation)的解决办法,带hosts详细修改
CLion版本号:JetBrains CLion 2017.2.1 第一行选择Activite,第二行Activate license with:选择Activation code. 这个时候里面的代 ...
- EXTENDED LIGHTS OUT poj1222 高斯消元法
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6443 Accepted: 42 ...
- SQL Server 后悔药 delete drop update
国庆假期终于有时间做点事情 因为平常工作会做些数据库操作 可能会有所操作失误 参考一下 方法一 ApexSql 2016一个软件 http://www.cnblogs.com/gsyifan/p/A ...