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 相关文章推荐
pyside写ui界面入门示例
Jan 22 Python
python基于windows平台锁定键盘输入的方法
Mar 05 Python
Python函数的周期性执行实现方法
Aug 13 Python
Python3实现并发检验代理池地址的方法
Sep 18 Python
python实现生命游戏的示例代码(Game of Life)
Jan 24 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 Python
Python调用C++,通过Pybind11制作Python接口
Oct 16 Python
Django添加KindEditor富文本编辑器的使用
Oct 24 Python
python实现顺时针打印矩阵
Mar 02 Python
postman传递当前时间戳实例详解
Sep 14 Python
在python中创建指定大小的多维数组方式
Nov 28 Python
Python制作表白爱心合集
Jan 22 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
php垃圾代码优化操作代码
2010/08/05 PHP
PHP 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
如何把php5.3版本升级到php5.4或者php5.5
2015/07/31 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
鼠标图片振动代码
2006/07/06 Javascript
pjblog中的UBBCode.js
2007/04/25 Javascript
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
js获取本机的外网/广域网ip地址完整源码
2013/08/12 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
vue axios登录请求拦截器
2018/04/02 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
python运行时强制刷新缓冲区的方法
2019/01/14 Python
python十进制转二进制的详解
2020/02/07 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
2014两会优秀的心得体会范文
2014/03/17 职场文书
协议书样本
2014/04/23 职场文书
2014年检验科工作总结
2014/11/22 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书