话不多说直接上代码

封装连接

@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 执行服务器命令的资料请关注脚本之家其它相关文章!

cmd运行python服务器,python如何利用paramiko执行服务器命令相关推荐

  1. python subprocess使用_python利用subprocess执行交互命令

    已经知道,os.system可以方便的利用python代码执行一些像ping.ipconfig之类的系统命令,但却只能得到命令执行是否成功,不能获得命令成功执行后的结果,像下面这样: 1 >&g ...

  2. python怎么连接远程服务器没有按时响应_python通过paramiko执行ssh命令时设置超时时间 - Python - 服务器之家...

    python通过paramiko执行ssh命令时设置超时时间 发布时间:2014-06-17

  3. win7 asp虚拟服务器,win7怎么利用ASP获取服务器IP地址 win7利用ASP获取服务器IP地址教程...

    win7系统浏览器打开的网页查看服务器ip地址,网络上浏览的网页都是放在服务器上的,那么怎样用ASP获取服务器ip地址呢?今天小编给大家带来ASP获取服务器IP地址的方法,请一起看看下文详细介绍吧. ...

  4. python超赞插件you-get,执行一行命令即可下载、命令行下载工具推荐!

    you-get 是基于python3实现的多媒体资源下载插件,包括音频.图片.视频等下载功能.执行方式简单直接在.命令行执行命令即可下载相应的资源! [阅读全文] 插件安装 ''' 安装命令:pip ...

  5. git服务器文件同步,利用git让服务器网站与本地同步 ssh配置

    嘛,就是将服务器上的网站和本地同步. 方法1 首先是上传服务器上的网站到github仓库 git init git add . git commit -m '' 关联远程仓库,先去github上新建一 ...

  6. java里面运行js_在java中利用rhino执行javascript

    以rhino中执行QQ邮箱的safeauth.js为例 js代码地址:http://res.qqmail.com/zh_CN/htmledition20091127/js/safeauth.js (1 ...

  7. Android利用 libsuperuse执行shell命令或获取root权限

    Android 5.1 之后,发现通过ActivityManger获取不到正在运行的进程了,可以通过shell命令来获取,参考. libsuperuse执行shell可以参考: http://my.o ...

  8. 利用go执行nmap命令

    如题,针对nmap探测任务,尤其是批量探测的情况下.我们可以用脚本的方式代替手工 package mainimport ("bytes""fmt""g ...

  9. python远程linux服务器执行命令_基于使用paramiko执行远程linux主机命令(详解)

    paramiko是python的SSH库,可用来连接远程linux主机,然后执行linux命令或者通过SFTP传输文件. 关于使用paramiko执行远程主机命令可以找到很多参考资料了,本文在此基础上 ...

最新文章

  1. [转载] 全本张广泰——第十七回 夫人诱广泰 血溅洪洞县
  2. python 字典的值可以为集合吗_转:Python字典与集合操作总结
  3. 如何利用百度ocr实现验证码自动识别
  4. 要引爆用户增长?抵制“诱惑”更健康
  5. android wifi RSSI达到阈值自动断开
  6. spring配置详解-初始化销毁方法
  7. 报表怎样实现滚动的公告效果?
  8. 多图上传 - Web Uploader
  9. Makefile之自动生成依赖(8)
  10. 新iPhone同款?谷歌Pixel 4渲染图曝光:“浴霸”相机模组抢眼
  11. 一行一个链接代码_小白写代码讨女朋友欢心,包教包会
  12. Centos7 防火墙常用配置
  13. 2015-2016书籍计划
  14. C语言libiconv编程,libIconv.lib编码库的生成和使用
  15. raw socket编程实例
  16. 主流数据持久层框架特性与实践
  17. asp.net开源资料——国内.NET论坛源代码
  18. 吴恩达深度学习笔记(40)-指数加权平均数优化算法
  19. 快速增加闲鱼浏览量,就靠这些方法
  20. Win10 系统一天蓝屏好多次,怎么解决?

热门文章

  1. Altium.Designer的学习视频 分享~~
  2. 基于FPGA的costas环同步系统仿真与分析
  3. 关于Python的编码注释# -*- coding:utf-8 -*- 详解
  4. 从CES 2017看今年智能汽车发展趋势之一:车联网有望率先实现
  5. 分离Exchange的OWA和Microsoft-Server-Activesync手机访问
  6. win10下使用python访问vmbox中的redis
  7. 【前端积累】点击切换显示内容
  8. Android 部分机型GridView四周默认间距
  9. 移动游戏高速增长为市场营销带来新的机会
  10. MOSS2010单点登录