博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python自动化之路 day5-1 paramiko模块
阅读量:5078 次
发布时间:2019-06-12

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

模块 paramiko

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

1、下载安装

windows和Linux平台都建议使用pip 安装,

pip3 install paramiko

2、pycharm第三方库安装

来介绍一下PyCharm 安装使用第三方库的安装,因为是第一次安装第三方库,仪式感很重要。

打开pycharm,在File->Settings->Project: ->Project Interpreter 里,点右边的+号。

 

在搜索框输出入第三方库名,选中后点左下角的“Install Package”进行安装。

3、paramiko模块使用

远程执行命令:

import paramikossh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)ssh.connect('192.168.0.172',22,'Ljohn','1356236')stdin,stdout,stderr = ssh.exec_command('uptime')print(stdout.read())ssh.close()

从上面可以看到输出的结果是byte字节类型需要转换,完善一下上面代码:

import paramiko# 创建SSH对象ssh = paramiko.SSHClient()# 允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.MissingHostKeyPolicy())# 连接服务器,下面改一下登陆信息ssh.connect(hostname='192.168.0.172',port=22,username='Ljohn',password='1356236')# 执行命令,写死命令或者用下面的获取输入stdin,stdout,stderr = ssh.exec_command('ls -la /etc/paswd')# 获取命令结果,标准输出和标准错误应该同事只有一个值res,err = stdout.read(),stderr.read()if res: print('res:\n',res.decode())if err: print('err:\n',err.decode())# 关闭连接ssh.close()

参数说明:上面例子中的第二句 ssh.set_missing_host_key_policy(paramiko.MissingHostKeyPolicy()) ,设置允许没有host_key的连接策略。如果找不到know_hosts文件,或者文件中没有这台主机,如果没有这句,就会报错。如果有这句,那么就执行作为参数的那个方法的策略。作为参数的 paramiko.MissingHostKeyPolicy() 还有另外3个方法。

  • MissingHostKeyPolicy: 这个是下面3个参数的父类,直接就一句pass,就是什么也不做。所以可以正常运行
  • AutoAddPolicy: 自动添加到know_hosts中,那么下次就不会找不到了。如果找不到know_host文件的话,就和上面一样了
  • RejectPolicy: 直接拒绝,会抛出一个错误。默认就是这个,所以不写这句会报错。
  • WarningPolicy: 发出警告,会先报个错,但是不中断,程序还会继续执行

SFTP远程上传下载文件:

import paramikotransport = paramiko.Transport(('192.168.1.123', 22))transport.connect(username='Ljohn', password='123456')# 建立sftp连接sftp = paramiko.SFTPClient.from_transport(transport)# 上传文件:源文件,目的文件sftp.put('local.txt', '/tmp/server.txt')# 下载文件:源文件,目的文件sftp.get('/tmp/server.txt', 'from_server.txt')transport.close()
sftp上传下载-用户密码

基于密钥验证

在paramiko模块里也是以后,使用pkey来代替passwod进行登录

远程执行命令:

import paramiko# 使用命令从文件获取密钥,注意修改文件路径private_key = paramiko.RSAKey.from_private_key_file('id_rsa')ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.MissingHostKeyPolicy())# 连接服务器,这里要改一下,注意参数ssh.connect(hostname='192.168.0.172', port=22, username='Ljohn', pkey=private_key)# 执行命令测试一下stdin, stdout, stderr = ssh.exec_command('df')res, err = stdout.read(), stderr.read()if res: print('res:\n', res.decode()) # 如果有标准输出,则打印出来if err: print('err:\n', err.decode()) # 如果有标准错误,则打印出来ssh.close()
远程执行命令-密钥验证

sftp 上传下载文件:

import paramikopravie_key_path = '/home/Ljohn/.ssh/id_rsa'key = paramiko.RSAKey.from_private_key_file(pravie_key_path)t = paramiko.Transport(('192.168.0.172',22))t.connect(username='Ljohn',pkey=key)sftp = paramiko.SFTPClient.from_transport(t)sftp.put('/tmp/test3.py','/tmp/test3.py') sftp.get('/tmp/test3.py','/tmp/test4.py') t.close()
sftp上传下载-密码验证
posted on
2018-02-07 17:58 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/ljohn-/p/8427831.html

你可能感兴趣的文章
c#自定义控件中的事件处理
查看>>
django Models 常用的字段和参数
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>
关于indexOf的使用
查看>>
英语单词
查看>>
Mongo自动备份
查看>>
cer证书签名验证
查看>>
新手Python第一天(接触)
查看>>
【bzoj1029】[JSOI2007]建筑抢修
查看>>
synchronized
查看>>
codevs 1080 线段树练习
查看>>
[No0000195]NoSQL还是SQL?这一篇讲清楚
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
QML学习笔记之一
查看>>