python如何利用paramiko执行服务器命令


Posted in Python onNovember 07, 2020

话不多说直接上代码

封装连接

@staticmethod
  def connect(ip, server_user, server_port, server_path):
    """
    连接服务器

    :param :
    :return:
    """
    ssh = paramiko.SSHClient()
    private_key = paramiko.RSAKey.from_private_key_file('{}.ssh/id_rsa'.format(server_path))
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try:
      ssh.connect(ip, port=server_port, username=server_user, pkey=private_key, timeout=5, allow_agent=True)
      return ssh
    except Exception as e:
      app.logger.info('connect_error info is {}'.format(e.__repr__()))

      return {
        'result': 1,
        'ip': ip,
        'msg': e.__repr__(),
      }

在服务器执行命令

def fabric_run_cmd(self, ip, server_user, server_port, server_path, cmd):
    """
    批量在服务器执行命令

    :return:
    """
    conn = self.connect(ip, server_user, server_port, server_path)
    try:
      if type(conn) == dict:
        return conn
      else:
        stdin, stdout, stderr = conn.exec_command(cmd)
        app.logger.info('fabric_run_cmd_stdout info is {}'.format(stdout.readlines()))
        app.logger.info('fabric_run_cmd_stderr info is {}'.format(stderr.readlines()))
        channel = stdout.channel
        status = channel.recv_exit_status()
        conn.close()
        app.logger.info('fabric_run_cmd_status info is {}'.format(status))
        if status == 0:
          return {
            'ip': ip,
            'msg': '执行成功',
            'result': 0
          }
        else:
          return {
            'ip': ip,
            'msg': stderr.readlines(),
            'result': 1
          }
    except Exception as e:
      app.logger.info('fabric_run_cmd_error info is {}'.format(e.__repr__()))
      return {
        'ip': ip,
        'msg': e.__repr__(),
        'result': 1
      }

将文件发送到服务器

def fabric_put_file(self, ip, src_file, dst_file, server_user, server_port, server_path):
    """
    发送文件到服务器

    :return:
    """
    conn = self.connect(ip, server_user, server_port, server_path)
    if type(conn) == dict:
      return conn
    else:
      try:
        ftp = conn.open_sftp()
        ftp.put(dst_file, src_file) # 发送文件之前先判断有没有目标文件夹 如果没有现在服务器上创建文件夹
        ftp.close() # 在此判断文件是否发送成功
        return {
          'ip': ip,
          'msg': '上传成功',
          'result': 0
        }
      except Exception as e:
        app.logger.info('fabric_put_file_error info is {}'.format(e.__repr__()))
        return {
          'ip': ip,
          'msg': e.__repr__(),
          'result': 1
        }

能力有限,如有不妥请留言指正

以上就是python如何利用paramiko执行服务器命令的详细内容,更多关于python 执行服务器命令的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python获取当前计算机cpu数量的方法
Apr 18 Python
Python中的推导式使用详解
Jun 03 Python
pytorch 数据集图片显示方法
Jul 26 Python
对python中if语句的真假判断实例详解
Feb 18 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
在notepad++中实现直接运行python代码
Dec 18 Python
python实现加密的方式总结
Jan 19 Python
Python如何输出整数
Jun 07 Python
Django实现内容缓存实例方法
Jun 30 Python
10个顶级Python实用库推荐
Mar 04 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 Python
Elasticsearch 基本查询和组合查询
Apr 19 Python
基于python模拟TCP3次握手连接及发送数据
Nov 06 #Python
如何使用Django Admin管理后台导入CSV
Nov 06 #Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 #Python
python两种获取剪贴板内容的方法
Nov 06 #Python
用python写一个带有gui界面的密码生成器
Nov 06 #Python
python如何编写类似nmap的扫描工具
Nov 06 #Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 #Python
You might like
PHP IPV6正则表达式验证代码
2010/02/16 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
Thinkphp连表查询及数据导出方法示例
2016/10/15 PHP
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
vue-cli3搭建项目的详细步骤
2018/12/05 Javascript
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
JQuery常见节点操作实例分析
2019/05/15 jQuery
Vue+Koa2+mongoose写一个像素绘板的实现方法
2019/09/10 Javascript
JavaScript Reflect Metadata实现详解
2019/12/12 Javascript
[52:36]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Pyramid添加Middleware的方法实例
2013/11/27 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
python开发入门——set的使用
2020/09/03 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
业务部经理岗位职责
2014/01/04 职场文书
2014年工会工作总结
2014/11/12 职场文书
小学生作文评语集锦
2014/12/25 职场文书
校园安全教育心得体会
2016/01/15 职场文书
golang定时器
2022/04/14 Golang