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使用chardet判断字符串编码的方法
Mar 13 Python
python实现TF-IDF算法解析
Jan 02 Python
Python回文字符串及回文数字判定功能示例
Mar 20 Python
详解python中的线程与线程池
May 10 Python
python中eval与int的区别浅析
Aug 11 Python
python 发送json数据操作实例分析
Oct 15 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
详解python logging日志传输
Jul 01 Python
Python制作一个仿QQ办公版的图形登录界面
Sep 22 Python
Python下使用Trackbar实现绘图板
Oct 27 Python
python 中[0]*2与0*2的区别说明
May 10 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
文件上传程序的全部源码
2006/10/09 PHP
基于HTTP长连接的"服务器推"技术的php 简易聊天室
2009/10/31 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
php中的curl_multi系列函数使用例子
2014/07/29 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
jquery 选择器部分整理
2009/10/28 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
2015/11/24 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
jQuery事件对象总结
2016/10/17 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
python 图片验证码代码分享
2012/07/04 Python
Python格式化css文件的方法
2015/03/10 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
python ddt实现数据驱动
2018/03/14 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
如何利用pygame实现简单的五子棋游戏
2019/12/29 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
酒店优秀员工推荐信
2015/03/24 职场文书
2015年双拥工作总结
2015/04/08 职场文书
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫