python执行rados命令例子
前言
我们以前的管理平台在python平台下面做的,内部做的一些操作采用的是命令执行,然后解析的方式去做的,ceph自身有python的rados接口,可以直接调用原生接口,然后直接解析json的方式,这样更靠近底层
在看ceph-dash内部的实现的时候,发现里面的获取集群信息的代码可以留存备用
代码实例
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import json
from rados import Rados
from rados import Error as RadosError
class CephClusterCommand(dict):
"""
Issue a ceph command on the given cluster and provide the returned json
"""
def __init__(self, cluster, **kwargs):
dict.__init__(self)
ret, buf, err = cluster.mon_command(json.dumps(kwargs), '', timeout=5)
if ret != 0:
self['err'] = err
else:
self.update(json.loads(buf))
config={'conffile': '/etc/ceph/ceph.conf', 'conf': {}}
with Rados(**config) as cluster:
cluster_status = CephClusterCommand(cluster, prefix='status', format='json')
print cluster_status
总结
调用原生接口的好处在于,只需要很少的库就可以取得监控系统所需要的值
最近在研究系统的时候发现一个问题
跟着错误的文档实践只会掉进同一个坑
在遇到一个小的错误的时候,翻到了一个github的Issue,然后看到一个人把自己的配置过程和配置文件详详细细的都写在Issue下面,然后就跟着他的过程走了一遍,发现不论怎么弄都是同样的错误
而返回去根据另一个正确的文档又走一遍的时候,发现终于跑通了,回顾了一遍,发现是那个错误的过程里面的配置文件里面是有配置项目,不兼容的,而软件也没有抛出相关的错误,然后在同一个地方找了两天
所以如果有碰到无法解决的操作步骤文档的时候,就尽量不要去根据那个文档操作了,除非自己对细节弄的很清楚了
变更记录
| Why | Who | When |
|---|---|---|
| 创建 | 武汉-运维-磨渣 | 2017-02-28 |
python执行rados命令例子的更多相关文章
- python执行linux命令的两种方法
python执行linux命令有两种方法: 在此以Linux常用的ls命令为例: 方法一:使用os模块 1 2 3 shell# python >> import os >> ...
- 用python执行Linux命令
例1:在python中包装ls命令 #!/usr/bin/env python #python wapper for the ls command import subprocess subproce ...
- python执行mysqldump命令
本文简单讲述如何利用python执行一些sql语句,例如执行mysqldump命令,进行数据库备份,备份成sql文件 #!/usr/bin/python#导入os模块import os#导入时间模块i ...
- 再见Xshell、Xftp!Python执行Linux命令、上传下载远程文件
相信大家应该都接触过Linux操作系统(Ubuntu.Centos等),那么在使用的Linux操作系统需要使用一些远程ssh工具,尤其是公网服务器. 常用的ssh工具主要有:Xshell.MobaXt ...
- Python - 执行cmd命令
python操作cmd 我们通常可以使用os模块的命令进行执行cmd 方法一:os.system os.system(执行的命令) # 源码 def system(*args, **kwargs): ...
- python 执行shell命令
1.os模块中的os.system()这个函数来执行shell命令 1 2 3 >>> os.system('ls') anaconda-ks.cfg install.log i ...
- 使用python执行linux命令
python版本是2.7.12 一.简单的获取linux命令的执行结果,比如:获取一个PID的进程树结构,linux命令是pstree -p pid,在python中有一个模块可以方便的获取.至于有时 ...
- Python 执行linux 命令
# !/usr/bin/env python # -*- coding: utf-8 -* import os def main(): file_list = os.popen("ls&qu ...
- python执行cmd命令
os.system os.system用来执行cmd指令,在cmd输出的内容会直接在控制台输出,返回结果为0表示执行成功 注意:os.system是简单粗暴的执行cmd指令,如果想获取在cmd输出的内 ...
随机推荐
- git stash功能的使用
一,git stash的作用: 能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录 说明:架构森林是一个专注架构的博客,地址:https://www.cnblogs.com ...
- phpstorm10.0.3 下载与激活
phpstorm10.0.3 百度网盘下载 提取码: kqvc 激活服务器: http://jetbrains.tencent.click/ (2016-09-19 可用) http://owo. ...
- Java 悲观锁 synchronized (member){代码块}
Java 如果遇到会出现高并发的情况,一般建议使用悲观锁 :synchronized (member){代码块} 需要对数据库进行修改或新增的时候,建议写上事务--@Transactional @T ...
- Python入门教程完整版(懂中文就能学会)
前几天给大家分享<从零学会Photoshop经典教程300集>的教程受到了广泛的关注,有人不知道怎么领取,居然称小编为"骗子". 不过小编的内心是强大的,网友虐我千百遍 ...
- 关于设置Vscode缩进,保存代码任然缩进无效解决方式
在Vscode按F1,运行命令,输入Formatter config 把内容更改为以下代码 { "onSave": true, "javascript": { ...
- 执行java -jar filename.jar提示没有主清单属性
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> ...
- 自定义Jackson2HttpMessageConverter,适应.html后缀url
Jackson2HttpMessageConverter 用处 SpringMVC中,controller中的方法返回java Bean对象,mvc将此对象转换成字符串 默认支持的mediaType: ...
- webpack4的安装使用
1.全局安装Webpack 安装到全局后你可以在任何地方共用一个 Webpack 可执行文件( 也就是说可以直接在终端使用webpack的命名 ,例如:webpack --config webpack ...
- 全球最火的程序员学习路线!没有之一!3天就在Github收获了接近1w点赞
大家好,我是G哥,目前人在荆州办事,但是干货还是要安排上! 国外有一个爆火的开发人员学习路线,目前已经在 Github收获了 131 k+ star,Star 数量在 Github 所有仓库中排名第 ...
- Spring入门-------------1
Spring是一个开源框架,为简化企业级应用开发而生,使用Spring可以使简单的JavaBean 实现以前只有EJB才能实现的功能.Spring 是一个IOC和Aop容器框架. 特性: 轻量级:Sp ...