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使用htpasswd实现基本认证授权的例子
Jun 10 Python
详解Python程序与服务器连接的WSGI接口
Apr 29 Python
深入解析Python设计模式编程中建造者模式的使用
Mar 02 Python
python利用有道翻译实现"语言翻译器"的功能实例
Nov 14 Python
python opencv捕获摄像头并显示内容的实现
Jul 11 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
Python 实现训练集、测试集随机划分
Jan 08 Python
Python线程threading模块用法详解
Feb 26 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
May 20 Python
Python爬虫headers处理及网络超时问题解决方案
Jun 19 Python
python开根号实例讲解
Aug 30 Python
Python Spyder 调出缩进对齐线的操作
Feb 26 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变量作用域的一些问题
2013/08/08 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
Vue EventBus自定义组件事件传递
2018/06/25 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
Python urls.py的三种配置写法实例详解
2017/04/28 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
Python3.5装饰器典型案例分析
2019/04/30 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
上海某公司.net方向笔试题
2014/09/14 面试题
公司董事长职责
2013/12/12 职场文书
小学生春游活动方案
2014/08/20 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
兴趣班停课通知
2015/04/24 职场文书
培训班通知
2015/04/25 职场文书