本节内容

  1. paramiko模块

1.paramiko模块

Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作

Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作

1.1 基于用户名密码连接

一下的代码中所有的输出是基于windows来输出的,编码方式为‘gbk’.

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import paramiko
# 创建ssh对象
ssh= paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='192.168.111.128',port=22,username='root',password='123456')
comm = input(":>>")
while comm != 'q':
comm = input(":>>")
# 执行命令
stdin, stdout, stderr = ssh.exec_command(comm)
err = stderr.read()
if err:
result = err
else:
result = stdout.read()
print(result.decode('gbk'))
ssh.close()
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import paramiko transport = paramiko.Transport(('192.168.111.128',22))
transport.connect(username='root',password='') ssh = paramiko.SSHClient()
ssh._transport = transport
comm = input(":>>")
while comm != 'q':
stdin,stdout,stderr = ssh.exec_command(comm)
err = stderr.read()
if err:
re_msg = err
else:
re_msg = stdout.read()
print(re_msg.decode('gbk'))
comm = input(":>>")

基于Transport的连接

1.2 基于秘钥文件连接

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import paramiko
def para(filepath,hostname,port,username):
private_key = paramiko.RSAKey.from_private_key_file(filepath)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=hostname,port=port,username=username,pkey=private_key)
comm = input(":>>")
stdin,stdout,stderr = ssh.exec_command(comm)
err = stderr.read()
if err:
re_msg = err
else:
re_msg = stdout.read()
return re_msg
if __name__ == '__main__':
filepath = r'id_rsa_2048'
a = para(filepath,'192.168.111.128',22,'root')
print(a.decode('gbk'))
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import paramiko
pkeyfile = paramiko.RSAKey.from_private_key_file(r'id_rsa_2048') transport = paramiko.Transport(('192.168.111.128',22))
transport.connect(username='root',pkey=pkeyfile) ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh._transport = transport
comm = input(":>>")
while comm != 'q':
stdin,stdout,stderr = ssh.exec_command(comm)
err = stderr.read()
if err:
re_msg = err
else:
re_msg = stdout.read()
print(re_msg.decode('gbk'))
comm = input(":>>")

基于transport的秘钥文件连接

1.3 基于秘钥字符串的连接

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import paramiko
from io import StringIO
# 秘钥以省略
key_str = '''XXXXXXXXXXXX''' pkey_str = paramiko.RSAKey(file_obj=StringIO(key_str)) ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname='192.168.111.128',port=22,username='root',pkey=pkey_str)
comm = input(":>>")
while comm != 'q':
stdin,stdout,stderr = ssh.exec_command(comm)
if stderr.read():
print(stderr.read().decode('gbk'))
else:
print(stdout.read().decode('gbk'))
comm = input(":>>")
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import paramiko
from io import StringIO key_str = '''XXXXXXXXXXXX''' pkey_str = paramiko.RSAKey(file_obj=StringIO(key_str)) transport = paramiko.Transport(('192.168.111.128',22))
transport.connect(username='root',pkey=pkey_str) ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh._transport = transport
comm = input(":>>")
while comm != 'q':
stdin,stdout,stderr = ssh.exec_command(comm)
if stderr.read():
print(stderr.read().decode('gbk'))
else:
print(stdout.read().decode('gbk'))
comm = input(":>>")

基于transport的秘钥串连接

1.4 文件上传和下载

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 上传
import paramiko
transport = paramiko.Transport(('192.168.111.128',22))
transport.connect(username='root',password='') helei = paramiko.SFTPClient.from_transport(transport) localpath = r'C:\Users\user\Desktop\123.txt'
remotepath = r'/tmp/helei.hahaha'
helei.put(localpath,remotepath)
transport.close()
# 下载
import paramiko
transport = paramiko.Transport(('192.168.111.128',22))
transport.connect(username='root',password='') sftp = paramiko.SFTPClient.from_transport(transport) localpath = r'C:\Users\user\Desktop\123.txt'
remotepath = r'/helei.haha'
sftp.get(localpath,remotepath)
transport.close()

上传和下载

Python paramik的更多相关文章

  1. Python的paramiko,实现ssh

    最简单的使用paramiko登录远程机器执行一些命令,学习实验楼的paramiko记录下来,第一次使用ConfigParser这个库,对于封装这些还是不太熟悉,只能慢慢来,嘿嘿嘿 这是python脚本 ...

  2. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  3. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  4. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  5. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  6. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  7. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

  8. Python编码记录

    字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...

  9. Apache执行Python脚本

    由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...

随机推荐

  1. 记一次SQL调优/优化(SQL tuning)——性能大幅提升千倍以上

    好久不写东西了,一直忙于各种杂事儿,恰巧昨天有个用户研发问到我一个SQL调优的问题,说性能太差,希望我能给调优下,最近有些懒,可能和最近太忙有关系,本来打算问问现在的情况,如果差不多就不调了,那哥们儿 ...

  2. EasyUI中Tabs添加远程数据的方法。

    tabs加载远程数据: $(function () { $("#btnquery").click(function () { if (!$("#tcontent" ...

  3. H5 音频标签自定义样式修改以及添加播放控制事件

    说明: 需求要求这个音频标签首先要是可适配移动端浏览器的,音频样式就是参考微信做的. 最终效果如下: 具体实现 思路: H5 的 <audio> 标签是由浏览器负责实现默认样式的.所以不同 ...

  4. XPath编写规则学习

    XPath编写规则学习   辅助工具:firefox安装findbugs,view Xpath firefox :Xpath验证方式:$x("xpath"); 粘贴xpath语句回 ...

  5. 阿里云API网关(1)服务网关的产品概述

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

  6. 从感知机到 SVM,再到深度学习(三)

        这篇博文详细分析了前馈神经网络的内容,它对应的函数,优化过程等等.     在上一篇博文中已经完整讲述了 SVM 的思想和原理.讲到了想用一个高度非线性的曲线作为拟合曲线.比如这个曲线可以是: ...

  7. CSS 选择器简介

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 选择器权重 如果以4位数表示选择符权重,那么: 元素选择器的权重是1: id 选择器的权重为100: cl ...

  8. CountDownLatch与thread-join()的区别

    今天学习CountDownLatch这个类,作用感觉和join很像,然后就百度了一下,看了他们之间的区别.所以在此记录一下. 首先来看一下join,在当前线程中,如果调用某个thread的join方法 ...

  9. 【转载】Linux下安装、配置、启动Apache

    原文地址:http://www.cnblogs.com/zhuque/archive/2012/11/03/2763352.html 安装Apache前准备: 1.检查该环境中是否已经存在httpd服 ...

  10. C# Post提交数据

    /// <summary> /// Post提交数据 /// </summary> /// <param name="postUrl">URL& ...