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 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
Python实现爬取逐浪小说的方法
Jul 07 Python
详解Django通用视图中的函数包装
Jul 21 Python
Python中subprocess的简单使用示例
Jul 28 Python
Python数据类型详解(二)列表
May 08 Python
Python PyCharm如何进行断点调试
Jul 05 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
Feb 21 Python
新手入门学习python Numpy基础操作
Mar 02 Python
python继承threading.Thread实现有返回值的子类实例
May 02 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 Python
python实现学生信息管理系统(精简版)
Nov 27 Python
scrapy实践之翻页爬取的实现
Jan 05 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
生成sessionid和随机密码的例子
2006/10/09 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
python实现socket客户端和服务端简单示例
2014/02/24 Python
Python isinstance函数介绍
2015/04/14 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
python数据结构学习之实现线性表的顺序
2018/09/28 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
python 实现视频 图像帧提取
2019/12/10 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
SQL Server数据库笔试题和答案
2016/02/04 面试题
公司前台辞职报告
2014/01/19 职场文书
上课迟到检讨书
2014/02/19 职场文书
《匆匆》教学反思
2014/02/22 职场文书
社会调查研究计划书
2014/05/01 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
四查四看整改措施
2014/09/19 职场文书
中学生旷课检讨书2篇
2014/10/09 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers