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 相关文章推荐
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
Python中threading模块join函数用法实例分析
Jun 04 Python
python数据结构之列表和元组的详解
Sep 23 Python
聊聊Python中的pypy
Jan 12 Python
python入门教程 python入门神图一张
Mar 05 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
Linux下多个Python版本安装教程
Aug 15 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 Python
Python自动化测试基础必备知识点总结
Feb 07 Python
pandas 操作 Excel操作总结
Mar 31 Python
python 进阶学习之python装饰器小结
Sep 04 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
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
Smarty模板配置实例简析
2019/07/20 PHP
比Jquery的document.ready更快的方法
2010/04/28 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
JS中Location使用详解
2015/05/12 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
使用Vue实现图片上传的三种方式
2018/07/17 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
使用cx_freeze把python打包exe示例
2014/01/24 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
python 调用钉钉机器人的方法
2019/02/20 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
人事行政主管岗位职责
2013/12/22 职场文书
防沙治沙典型材料
2014/05/07 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
村主任群众路线个人对照检查材料
2014/09/26 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
职称评定个人总结
2015/03/05 职场文书
创卫工作总结2015
2015/04/22 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python