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 相关文章推荐
Saltstack快速入门简单汇总
Mar 01 Python
深入理解Python 关于supper 的 用法和原理
Feb 28 Python
Python简单读写Xls格式文档的方法示例
Aug 17 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
Jul 11 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
Aug 05 Python
如何在Cloud Studio上执行Python代码?
Aug 09 Python
Python os模块常用方法和属性总结
Feb 20 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
Apr 20 Python
python打开文件的方式有哪些
Jun 29 Python
Python函数调用追踪实现代码
Nov 27 Python
Python基础学习之奇异的GUI对话框
May 27 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
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
一个JQuery操作Table的代码分享
2012/03/30 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
javascript实现延时显示提示框效果
2017/06/01 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
layui框架与SSM前后台交互的方法
2019/09/12 Javascript
javascript执行上下文、变量对象实例分析
2020/04/25 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
python读取Android permission文件
2013/11/01 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
自荐信需注意事项
2014/01/25 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
梅花魂教学反思
2014/04/25 职场文书
开展创先争优活动总结
2014/08/28 职场文书
公司离职证明标准格式
2014/11/18 职场文书
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
深入详解JS函数的柯里化
2021/06/09 Javascript