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 域名分析工具实现代码
Jul 15 Python
打开电脑上的QQ的python代码
Feb 10 Python
python解析xml文件实例分享
Dec 04 Python
python实现提取百度搜索结果的方法
May 19 Python
十个Python程序员易犯的错误
Dec 15 Python
python 根据pid杀死相应进程的方法
Jan 16 Python
Python Flask前后端Ajax交互的方法示例
Jul 31 Python
如何使用Python标准库进行性能测试
Jun 25 Python
python flask web服务实现更换默认端口和IP的方法
Jul 26 Python
python列表插入append(), extend(), insert()用法详解
Sep 14 Python
Pandas-Cookbook 时间戳处理方式
Dec 07 Python
python中validators库的使用方法详解
Sep 23 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
function.inc.php超越php
2006/12/09 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
javascript 写类方式之四
2009/07/05 Javascript
js读取cookie方法总结
2014/10/31 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python3使用requests包抓取并保存网页源码的方法
2016/03/15 Python
python如何获取服务器硬件信息
2017/05/11 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
工作自我评价分享
2013/12/01 职场文书
工作人员思想汇报
2014/01/09 职场文书
考试没考好检讨书
2014/01/31 职场文书
服装采购员岗位职责
2014/03/15 职场文书
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
小学科学教学计划
2015/01/21 职场文书
自我检讨报告
2015/01/28 职场文书
婚宴邀请函
2015/01/30 职场文书
2016年大学生社区服务活动总结
2016/04/06 职场文书
HTTP中的Content-type详解
2022/01/18 HTML / CSS
python读取mat文件生成h5文件的实现
2022/07/15 Python