import time
import paramiko class HandleParamiko:
'''
定义一个linux处理类
''' def __init__(self, hostname, password, port=22, username='root'):
'''
构造器
:param hostname: 主机ip,type:str
:param password: 密码,type:str
:param port: 端口,type:int 默认22
:param username: 用户名,type:str
:return:
'''
self.t = None
self.sftp = None
self.hostname = hostname
self.password = password
self.port = port
self.username = username
self.client = paramiko.SSHClient() # 实例化SSHclient
self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动添加策略,保存服务器的主机名和密钥信息
try:
self.client.connect(hostname=hostname,
port=port,
username=username,
password=password)
except Exception as all:
print(f"连接异常,请确认参数是否有误:{all}")
self.channel = self.client.invoke_shell() # 创建一个交互会话的对象 def sftp_client(self):
'''
创建一个sftp上传下载客户端
:return: sftp对象,调用put()和get()分别实现文件的上传和下载
'''
try:
self.t = paramiko.Transport((self.hostname, self.port))
self.t.connect(username=self.username, password=self.password)
self.sftp = paramiko.SFTPClient.from_transport(self.t)
return self.sftp
except FileNotFoundError as e:
print(f"FileNotFoundError:{e}") def cmd_res(self, cmd, get_way='out'):
'''
定义一个一次性会话方法(优点:响应速度快,缺点:不能保持会话)
:param cmd: linux命令,type:str
:param get_way: 支持:‘in’、‘out’、‘err’三种方式
:return: 回显结果
'''
stdin, stdout, stderr = self.client.exec_command(cmd)
if get_way == 'in':
return str(stdin.read()).replace('\\n', '\n')
elif get_way == 'out':
return str(stdout.read()).replace('\\n', '\n')
elif get_way == 'err':
return str(stderr.read()).replace('\\n', '\n')
else:
print("输入获取的方式有误,获取回显结果失败!") def cmd_ssh(self, cmd):
'''
定义一个交互会话的方法(优点:交互式会话,缺点:响应速度慢)
:param cmd: linux命令,type:str
:return:
'''
self.channel.send(cmd+'\n')
time.sleep(5)
try:
res = self.channel.recv(1024 * 100000).decode('utf-8')
except:
res = self.channel.recv(1024 * 100000).decode('gbk')
return res def close_channel(self):
'''
关闭交互式会话
:return:
'''
self.channel.close() def close_client(self):
'''
关闭SSH连接
:return:
'''
self.client.close()

使用paramiko模块进行封装,远程操作linux主机的更多相关文章

  1. 远程操作Linux主机

    通过putty文件访问: 下载路径:https://the.earth.li/~sgtatham/putty/0.70/w32/putty-0.70-installer.msi 通过Python文件执 ...

  2. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  3. Notepad++【远程操作linux文件】

    目录 目的 预期效果 操作步骤 1.打开插件 2.安装NppFTP 3.连接远程主机 注意 目的 通过Notepad++远程登录linux主机,修改配置文件 预期效果 在Notepad++上登录lin ...

  4. 远程联机linux主机

    远程联机linux主机 推荐使用 ssh  如 ssh user@www.abc.com(ssh使用公钥+私钥非对称加密,数据传输安全,不要使用telnet) 传输文件:sftp 或者 scp 若想使 ...

  5. putty怎么用?如何使用Putty远程管理Linux主机

    Putty是一个免费的Windows 32平台下用于telnet.rlogin和ssh客户端的远程客户端工具,可以通过PUTTY快速的实现SSH连接linux等主机,下面小编就给大家演示一下如何使用P ...

  6. 使用SSH客户端远程登录Linux主机

    使用SSH客户端远程登录Linux主机(可替代samba.ftp服务) . Linux系统起初就是为多用户而产生的,可以允许多个用户同时登录linux主机各自进行操作,如图1所示: 图1 SSH(Se ...

  7. python的paramiko模块-远程登录linux主机并操作

    paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作. 如果python服务器对被远程控制机器开启了免密验证,即在python服务器上可通过ssh 用户名@被控制机 ...

  8. Python Paramiko模块与MySQL数据库操作

    Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...

  9. python中使用paramiko模块并实现远程连接服务器执行上传下载

    paramiko模块 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 因此,如果需要使用SSH从一个平台连接到另外一个平台,进行一系 ...

随机推荐

  1. SpringCloud gateway (史上最全)

    疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之 -25[ 博客园 总入口 ] 前言 ### 前言 疯狂创客圈(笔者尼恩创建的高并发研习社群)Springcloud 高并发系列文章,将为大家 ...

  2. windows7使用vhd虚拟磁盘

    操作系统 : windows7_x64 创建vhd 磁盘管理 --> 操作 --> 创建vhd 挂载vhd 脚本: rem 挂载VHD @echo off (echo select vdi ...

  3. Hyperledger Fabric相关文件解析

    1相关文件说明 这一部分涉及相关配置文件的解析, 网络的启动涉及到多个文件,本文按以下顺序进行分析: . ├── base │   ├── docker-compose-base.yaml #1 │  ...

  4. netty源码解析(4.0)-27 ByteBuf内存池:PoolArena-PoolThreadCache

    前面两章分析的PoolChunk和PoolSubpage,从功能上来说已经可以直接拿来用了.但直接使用这个两个类管理内存在高频分配/释放内存场景下会有性能问题,PoolChunk分配内存时算法复杂度最 ...

  5. 谁说程序员不浪漫?Python导出微信聊天记录生成爱的词云图

    明天又双叒叕是一年一度的七夕恋爱节了! 又是一波绝好的机会!恩爱秀起来! 购物车清空!礼物送起来!朋友圈晒起来!   等等! 什么?! 你还没准备好七夕礼物么? 但其实你不知道要送啥? 原来又双叒叕要 ...

  6. Java每日一面(Part1:计算机网络)[19/11/02]

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.TCP的滑动窗口 1.1 RTT和RTO的区别 ​ RTT:发送一个数据包到收到对应的ACK,所花费的时间 ​ RTO:重传时间间隔,TCP在发 ...

  7. BeautifulSoup的重要操作

    BeautifulSoup相关概念总结:https://www.cnblogs.com/pythonywy/p/11134481.html css基础以及选择器基础:https://www.cnblo ...

  8. js-事件函数调用简化

    // 一般写法 function fn(event) { console.log(event) } div.onclick = function (event) { fn(event) } ===== ...

  9. mysql登陆时出现ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

    有4到5天没开mysql,这天晚上打=打开phpstudy,想进去mysql练习练习,结果丢给我这个 ERROR 2013 (HY000): Lost connection to MySQL serv ...

  10. 【Gradle】Android Gradle 插件

    Android Gradle 插件 Android Gradle 插件简介 从Gradle角度来看,Android其实是Gradle的一个第三方插件,它是由Google的Android团队开发的.但从 ...