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字典get()方法用法分析
Apr 17 Python
Python操作列表之List.insert()方法的使用
May 20 Python
简单总结Python中序列与字典的相同和不同之处
Jan 19 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
Jul 10 Python
Python基于回溯法子集树模板解决m着色问题示例
Sep 07 Python
Python实现的径向基(RBF)神经网络示例
Feb 06 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 Python
详解如何将python3.6软件的py文件打包成exe程序
Oct 09 Python
python超时重新请求解决方案
Oct 21 Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
python:HDF和CSV存储优劣对比分析
Jun 08 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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
PHP 遍历文件实现代码
2011/05/04 PHP
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
php类常量用法实例分析
2015/07/09 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
js 利用className得到对象的实现代码
2011/11/15 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
jQuery动态添加
2016/04/07 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
Mac下Anaconda的安装和使用教程
2018/11/29 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
PyQt5响应回车事件的方法
2019/06/25 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
Python如何用filter函数筛选数据
2020/03/05 Python
python标准库OS模块详解
2020/03/10 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
python自动生成sql语句的脚本
2021/02/24 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
关于递归的一道.NET面试题
2013/05/12 面试题
冰淇淋店创业计划书范文
2013/12/27 职场文书
质量承诺书范文
2014/03/27 职场文书
大型主题婚礼活动策划方案
2014/09/15 职场文书
2014年关工委工作总结
2014/11/17 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang