2019独角兽企业重金招聘Python工程师标准>>>

在上篇文章中我们说到了Cobbler API,但是由于Cobbler api在cobbler 2.2以上版本不再建议使用(这其中的缘由在cobbler API介绍那篇文章中已经说明,此处不再赘述),而建议使用rpc来操纵cobbler。

本文将着重讲述如何使用rpc来操纵cobbler;本文翻译的源网站为:https://fedorahosted.org/cobbler/wiki/CobblerXmlrpc


关于XMLRPC

XMLRPC是一个用不同语言编写的通过网络进行交互的轻量级计算机程序。详情见:http://www.xmlrpc.com/

如果你想在cobbler 上实现以下目的,你应该使用XMLRPC API:

1.你想跟Cobbler进行交互,但是你的应用不是python的程序/脚本;

2.你想跟Cobbler进行交互,但是你的程序没有运行在Cobbler服务器上;

3.你有一个non-GPLd应用程序,并且想跟Cobbler交互,并被分发给公众或其他的客户。

要求

使用Cobbler的XMLRPC API,首先你必须设置CustomizableSecurity(cobbler 2.2以上已经默认设置了),并且确保Apache和cobblerd在你的Cobbler服务中运行了。如果你使用了authn_spacewalk 模块,请在/etc/cobbler/settings文件中将redhat_management_permissive值设置为1。

示例

将会在下面给出一些使用python调用XMLEPC的例子,但是XMLRPC应该可以很容易的和其他的任何语言进行绑定(使用任何语言进行调用XMLRPC)。例如,Java和Ruby已经和XMLRPC坚实的和XMLRPC绑定了。

连接Cobbler

使用Cobbler XMLRPC 的API进行任何操作,首先都必须连接到Cobbler,下面是一个例子:

import xmlrpclib
server = xmlrpclib.Server("http://192.168.12.14/cobbler_api")

上面的IP即Cobbler服务器的IP

登录

如果不登录,Cobbler的信息可能会可以被读取到,但是如果你想在Cobbler服务器上进行任何修改的操作,或启动操作,登录的令牌是必须的。一旦获取了令牌,这个令牌就可以传递给被调用的且需要令牌作为最后一个参数的任何一个远程函数。

一个令牌每隔60分钟将被更新一次。如果令牌过期,则需要重新获取登录令牌来取得登录凭证。

token = server.login("username","password")

注意:这里的用户名和密码是cobbler 的用户名和密码,设置Cobbler用户名和密码的命令如下:

htdigest /etc/cobbler/users.digest "Cobbler" cobbler

上述命令将会添加一个名为cobbler的用户,可以自己决定添加什么用户名,回车后需要连续输入两次密码。

注意远程方法的Exception捕获和错误操作

远程操作的问题/错误将会作为XMLRPC远程错误返回(远程 CobblerExceptions ? ),而不是返回一个状态代码。这就可以防止调用方法来检查繁琐的返回状态代码。

相反的,和查询相关的方法,以及调用登录返回的数据,没有实际意义,可以被忽略。

获取远程数据

想要查看distros, profiles, systems, images, 或者 repos ,或者远程服务器的定义。这些东西很容易就可以获取到:

#!/usr/bin/python
import xmlrpclib
server = xmlrpclib.Server("http://127.0.0.1/cobbler_api")
print server.get_distros()
print server.get_profiles()
print server.get_systems()
print server.get_images()
print server.get_repos()

上述每种方法返回描述远程数据的嵌套哈希,并且表示每一个Cobbler对象中的每个字段的列表。

查找

相对与检索给定类型的所有对象,它通常更容易直接搜索你想要的东西。

print server.find_distro({"name":"F*"})

上面的例子返回所有以“F”开头并且适用与所有对象类型的分发(distro).它就像在CobblerApi页面的搜索列表,任何字段的类型都可以被搜索。例如:

print server.find_system({"hostname":"*.lab.example.org"})

列表中返回的数据就和从get_distros() 、 get_systems()等方法中获取的数据相似,只是仅包含匹配的结果。

修改时间

你想查看上次使用XMLRPC查询系统所修改的信息?可以采用如下方式:

print server.find_systems_since(mtime)

注意:不同的Cobbler版本,这个函数并不一样,我的版本为2.6,因此我使用的是如下方法:

print server.get_systems_since(mtime)

转载于:https://my.oschina.net/guopengfei/blog/670251

使用 Xmlrpc 来控制cobbler api相关推荐

  1. lin-cms-dotnetcore.是如何方法级别的权限控制(API级别)的

    方法级别的权限控制(API级别) Lin的定位在于实现一整套 CMS的解决方案,它是一个设计方案,提供了不同的后端,不同的前端,而且也支持不同的数据库 目前官方团队维护 lin-cms-vue,lin ...

  2. eaccelerator 完全手册:配置、控制、API接口

    安装官方有很详细的文档 转自 http://www.enjoyphp.com/2010/eaccelerator-manual/ 配置选项 eaccelerator.shm_size 指定 eAcce ...

  3. authorize如何控制多个角色权限】_lincmsdotnetcore.是如何方法级别的权限控制(API级别)的...

    方法级别的权限控制(API级别) Lin的定位在于实现一整套 CMS的解决方案,它是一个设计方案,提供了不同的后端,不同的前端,而且也支持不同的数据库 目前官方团队维护 lin-cms-vue,lin ...

  4. Cobbler API

    #!/usr/bin/env python # -*- coding:utf-8 -*- # author : liuyu # date : 2018/11/19 0019 import xmlrpc ...

  5. AirSim(五)---理解篇: Airsim世界坐标系、NED坐标系、机体坐标系以及控制相关API接口函数

    目录 1. 坐标系 coordinate system (1) AirSim API的坐标系:NED 坐标系 with SI unit (2) Unreal Engine的坐标系 (3)AirSim全 ...

  6. Python 打印行列控制(API:pandas.set_option())

    目录 pandas.set_option():控制打印的行列 使用方式 实战 1.读取数据,发现问题 2.显示行列 总代码 参考资料: pandas.set_option():控制打印的行列 参数介绍 ...

  7. win32打印机控制,API打印操作

    直接上代码,将下面的代码复制到工程中保存为main.cpp,然后在工程目录下放一张miku.bmp图片,直接就可以编译并且执行了. 下面是代码 #include <windows.h> # ...

  8. spring中事务控制的一组API

    Spring事务控制我们要明确的 第一:JavaEE体系进行分层开发,事务处理位于业务层,Spring提供了分层设计业务层的事务处理解决方案. 第二:spring框架为我们提供了一组事务控制的接口.具 ...

  9. envoy api 网关_在边缘,作为网关或在网格中构建控制平面以管理Envoy代理的指南...

    envoy api 网关 最近, Envoy已成为流行的网络组件. 马特·克莱因( Matt Klein )在几年前写了一个博客,内容涉及Envoy的动态配置API,以及它如何成为Envoy的采用曲线 ...

最新文章

  1. 蓝桥杯--2012--取球游戏
  2. Android主线程耗时动画卡顿,Android性能优化实战之界面卡顿
  3. css3实现烟花效果,CSS3 带颤动效果的简易烟花动效
  4. html制作手机预览效果,新移动端Html5方式预览报表插件
  5. vue.js 三(数据交互)isomorphic-fetch
  6. SoftPool算法详解
  7. Qt学习笔记-QSqlModel的事物操作
  8. Dubbo基础知识总结
  9. [SHOI2001]小狗散步
  10. matlab 流星雨,dijkstra算法及其matlab实现
  11. 2.NET Core设定数据库种子
  12. 每天一道剑指offer-合并两个排序的链表
  13. 路面压电发电,应该有前途
  14. 管理信息系统期末复习
  15. php今日头条抓取正文,今日头条文章爬虫采集 - 八爪鱼采集器
  16. 软件需求分析步骤方法
  17. 学习方法 | 玩开源如何具有“趟坑” 的意识?
  18. 工商银行携手数美科技,赋能数字化业务高质量发展
  19. 那些有趣/用的Python库
  20. canal - 数据同步工具

热门文章

  1. 安全 - MySQL 出现严重的密码安全漏洞,许多系统存在风险
  2. CoverageMeter中关于“line coverage”不准确的解释
  3. Java自动装箱/拆箱 - Java那些事儿
  4. 【Spring源码分析系列】bean的加载
  5. 初创企业不上云拿什么“火拼”?
  6. [译] 解密 Airbnb 的数据科学部门如何构建知识仓库
  7. 使用shell统计字符串出现的次数,并从大到小进行排序显示
  8. Win7 64位系统上配置使用32位的Eclipse
  9. 自定义Seekbar拖动条式样
  10. python入门004~创建属于自己的第一个python3项目~基础知识的讲解