python 使用paramiko模块进行封装,远程操作linux主机的示例代码


Posted in Python onDecember 03, 2020
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()

以上就是python 使用paramiko模块进行封装,远程操作linux主机的示例代码的详细内容,更多关于python paramiko模块的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中顺序表的实现简单代码分享
Jan 09 Python
解决python爬虫中有中文的url问题
May 11 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
对python Tkinter Text的用法详解
Oct 11 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
Feb 16 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
Python中类似于jquery的pyquery库用法分析
Dec 02 Python
Selenium自动化测试工具使用方法汇总
Jun 12 Python
Pytorch 卷积中的 Input Shape用法
Jun 29 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 Python
Python 恐龙跑跑小游戏实现流程
Feb 15 Python
Python 按比例获取样本数据或执行任务的实现代码
Dec 03 #Python
用 Django 开发一个 Python Web API的方法步骤
Dec 03 #Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 #Python
python 使用cycle构造无限循环迭代器
Dec 02 #Python
python 使用csv模块读写csv格式文件的示例
Dec 02 #Python
python 发送邮件的四种方法汇总
Dec 02 #Python
如何用PyPy让你的Python代码运行得更快
Dec 02 #Python
You might like
php 分页函数multi() discuz
2009/06/21 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
详解Python中的__init__和__new__
2014/03/12 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
python实现决策树分类(2)
2018/08/30 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
python之拟合的实现
2019/07/19 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
Python数组并集交集补集代码实例
2020/02/18 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
Kathmandu澳洲户外商店:新西兰户外运动品牌
2017/11/12 全球购物
Johnston & Murphy官网: 约翰斯顿·墨菲牛津总统鞋
2018/01/09 全球购物
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
什么是属性访问器
2015/10/26 面试题
旅行社各个岗位职责
2014/03/15 职场文书
环保标语大全
2014/06/12 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
皇城相府导游词
2015/02/06 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python