paramiko模块,基于SSH用于连接远程服务器并执行相关操作。

一、安装

pip3 install paramiko

二、使用

SSHClient

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

基于用户名密码连接:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author: DBQ(Du Baoqiang) import paramiko #创建ssh对象 ssh = paramiko.SSHClient() #允许连接不在Know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #连接服务器
ssh.connect(hostname='192.168.1.103',port=22,username='root',password='') #执行命令
stdin,stdout,stderr = ssh.exec_command('ls /tmp/') #获取执行结果
result = stdout.read() print(result.decode()) #返回的是bytes #关闭连接
ssh.close() 复制代码
基于公钥密钥连接:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# auth : pangguoping import paramiko private_key = paramiko.RSAKey.from_private_key_file('/Users/daniel/.ssh/id_rsa') # 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='192.168.1.103', port=22, username='root', pkey=private_key) # 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
print(result.decode())
# 关闭连接
ssh.close()

SFTPClient

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

基于用户名密码 上传/下载
#!/usr/bin/env python
# -*- coding: utf-8 -*- import paramiko transport = paramiko.Transport(('192.168.1.103',22))
transport.connect(username='root',password='') sftp = paramiko.SFTPClient.from_transport(transport) #上传本地文件/Users/daniel/test/zhoulibo.mp4 上传到服务器的 /tmp/test.mp4
sftp.put('/Users/daniel/test/test.mp4','/tmp/test.mp4') #将远端/tmp/zhoulibo.mp4 下载到 本地 /Users/daniel/test.mp4
sftp.get('/tmp/zhoulibo.mp4','/Users/daniel/test.mp4') transport.close()
基于公钥/密钥的上传/下载:
#!/usr/bin/env python
# -*- coding: utf-8 -*- import paramiko private_key = paramiko.RSAKey.from_private_key_file('/Users/daniel/.ssh/id_rsa') transport = paramiko.Transport(('192.168.1.103',22))
transport.connect(username='root',pkey=private_key) sftp = paramiko.SFTPClient.from_transport(transport) #上传本地文件/Users/daniel/test/tt.mp4 上传到服务器的 /tmp/tt.mp4
sftp.put('/Users/daniel/test/tt.mp4','/tmp/tt.mp4') #将远端/tmp/tt.mp4 下载到 本地 /Users/daniel/tt.mp4
sftp.get('/tmp/tt.mp4','/Users/daniel/tt.mp4') transport.close()
#!/usr/bin/env python3
# -*- coding: utf-8 -*- import paramiko,uuid class SSHConnection: def __init__(self,host='192.168.1.103',port=22,username='root',pwd=''):
self.host = host
self.port = port
self.username = username
self.pwd = pwd
self.__k = None def create_file(self):
file_name = str(uuid.uuid4()) #生成一个'46cad739-5937-4312-9156-00753b272581'的文件名 uuid并转换成str
with open(file_name,'w') as f: #打开文件,往里面写一个sb
f.write('sb')
return file_name def run(self):
'''
主方法
:return:
'''
self.connect()
self.upload('/tmp/test.py') #调用upload方法,上传到服务器的/tmp/test.py
self.rename('/tmp/test.py','/tmp/sb.py') #改名为sb.py
self.close() def connect(self):
'''
建立连接
:return:
'''
transport = paramiko.Transport((self.host,self.port))
transport.connect(username=self.username,password=self.pwd)
self.__transport = transport def close(self):
'''
关闭连接
:return:
'''
self.__transport.close() def upload(self,target_path):
'''
连接,上传
:param target_path:
:return:
'''
file_name = self.create_file()
sftp = paramiko.SFTPClient.from_transport(self.__transport)
#上传本地文件 到服务器的 test.py
sftp.put(file_name, target_path) def rename(self, old_path, new_path):
'''
改名, 把/tmp/test.py 改名为 sb.py
:param old_path:
:param new_path:
:return:
'''
ssh = paramiko.SSHClient()
ssh._transport = self.__transport
#执行命令
cmd = "mv %s %s" %(old_path,new_path)
stdin,stdout,stderr = ssh.exec_command(cmd)
res = stdout.read() def cmd(self,command):
'''
可以执行其他命令
:param command:
:return:
'''
self.connect()
ssh = paramiko.SSHClient()
ssh._transport = self.__transport
#执行命令
stdin, stdout, stderr = ssh.exec_command(command)
res = stdout.read()
self.close()
return res ha = SSHConnection() ha.run()
res = ha.cmd('ls')
print(res.decode())

demo

python 之 Paramiko学习的更多相关文章

  1. Python之paramiko模块和SQL连接API

    堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: i ...

  2. python 之 paramiko

    """ 对app进行一些路由设置 """ """ 对socketio进行一些监听设置 "" ...

  3. Python 应用领域及学习重点

    笔者认为不管学习什么编程语言,首先要知道:学完之后在未来能做些什么? 本文将浅谈 Python 的应用领域及其在对应领域的学习重点.也仅是介绍了 Python 应用领域的"冰山一角" ...

  4. Python 装饰器学习

    Python装饰器学习(九步入门)   这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- c ...

  5. python的paramiko源码修改了一下,写了个操作命令的日志审计 bug修改

    python的paramiko源码修改了一下,写了个操作命令的日志审计,但是记录的日志中也将backspace删除键记录成^H这个了,于是改了一下代码,用字符串的特性. 字符串具有列表的特性 > ...

  6. 如何进行服务器的批量管理以及python 的paramiko的模块

    最近对公司的通道机账号进行改造管理,全面的更加深入的理解了公司账号管理的架构.(注:基本上所有的机器上的ssh不能使用,只有部分机器能够使用.为了安全的角度考虑,安装的不是公版的ssh,而都是定制版的 ...

  7. Requests:Python HTTP Module学习笔记(一)(转)

    Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...

  8. 从Theano到Lasagne:基于Python的深度学习的框架和库

    从Theano到Lasagne:基于Python的深度学习的框架和库 摘要:最近,深度神经网络以“Deep Dreams”形式在网站中如雨后春笋般出现,或是像谷歌研究原创论文中描述的那样:Incept ...

  9. Comprehensive learning path – Data Science in Python深入学习路径-使用python数据中学习

    http://blog.csdn.net/pipisorry/article/details/44245575 关于怎么学习python,并将python用于数据科学.数据分析.机器学习中的一篇非常好 ...

随机推荐

  1. 前端笔试题目小结--获取输入参数用户名;查询URL字符串参数

    编写一个JavaScript函数getSuffix,用于获得输入参数的后缀名.如输入abc.txt,返回txt. str1 = "abc.txt"; function getSuf ...

  2. C#6.0语法糖

    using System; using static System.Math;//using static,仅仅引入类中的静态方法 namespace _6._0Syntax { class Prog ...

  3. 活动指示器UIActivityIndicatorView

    活动指示器UIActivityIndicatorView可以告知用户有一个操作正在进行中 1.创建    UIActivityIndicatorView *activityIndicatorView ...

  4. 服务器端操作Cookie[2]

    服务器端操作Cookie,主要注意会使用以下三个类: HttpCookie,HttpResponse,HttpRequest 关于HttpCookie: 属性 描述 例子 Domain 获取或设置与此 ...

  5. xode 中文乱码处理

    find *.* -exec sh -c "iconv -f GB18030 -t UTF-8 {} > {}.txt" \;

  6. ajax初学

    //参数说明url:请求文件地址//fnSucc:请求成功执行的函数,请求成功的条件为readyState状态码为4:且status状态码为200,status状态为浏览器请求返回的状态码//在fnS ...

  7. dedecms _ 栏目无法更新

    dedecms 后台_  栏目无法更新: 那天我在移站,  出现了这个问题 例如这样的提示: 遇到问题咱就得解决啊: 解决方法如下: 进入dedecms后台 进入----系统-----系统基本参数-- ...

  8. ubuntu -server 忘记root 密码方法

    允许 su 到 root 非常简单,只需要重新设置下密码即可.下面是设置的方法: 1 me@ubuntu:~$ sudo passwd 2 密码:<--- 输入安装时那个用户的密码3 输入新的 ...

  9. AFNnetworking快速教程,官方入门教程译

    AFNnetworking快速教程,官方入门教程译 分类: IOS2013-12-15 20:29 12489人阅读 评论(5) 收藏 举报 afnetworkingjsonios入门教程快速教程 A ...

  10. 深入理解7816(1)---- 关于F/D和etu

    对于刚接触智能卡的工程师来说,在阅读7816-3规范的时候,常常被其中的一些术语迷惑,读起来会觉得有些别扭.尤其是在看到复位应答中的F和D设置,以及对应的etu的时候,会觉得有些复杂和难以理解. 其实 ...