From: Petter Reinholdtsen Date: Thu, 6 Dec 2012 09:24:13 +0000 (+0000) Subject: New post. X-Git-Url: http://pere.pagekite.me/gitweb/homepage.git/commitdiff_plain/6da41885dd78e354f6918e0ba9193590f953195a?ds=sidebyside New post. --- diff --git a/blog/data/2012-12-06-bofhd-scripting.txt b/blog/data/2012-12-06-bofhd-scripting.txt new file mode 100644 index 0000000000..a74babdd12 --- /dev/null +++ b/blog/data/2012-12-06-bofhd-scripting.txt @@ -0,0 +1,42 @@ +Title: Scripting the Cerebrum/bofhd user administration system using XML-RPC +Tags: english +Date: 2012-12-06 10:30 + +

Where I work at the University of +Oslo, we use the +Cerebrum user +administration system to maintain users, groups, DNS, DHCP, etc. +I've known since the system was written that the server was providing +an XML-RPC API, but +never spent time to try to figure out how to use it, as we always use +the bofh command line client at work. Until today. Here are a few +notes on how to use it with Python.

+ +

I started by looking at the source of the Java +bofh +client, to figure out how it connected to the API server. I also +googled for python examples on how to use XML-RPC, and found +a +simple example in the XML-RPC howto.

+ +

This simple example code show how to connect, get the list of +commands (as a JSON dump), and how to get the information about the +user currently logged in:

+ +
+#!/usr/bin/env python
+import getpass
+import xmlrpclib
+server_url = 'https://cerebrum-uio.uio.no:8000';
+username = getpass.getuser()
+password = getpass.getpass()
+server = xmlrpclib.Server(server_url);
+#print server.get_commands(sessionid)
+sessionid = server.login(username, password)
+print server.run_command(sessionid, "user_info", username)
+result = server.logout(sessionid)
+print result
+
+ +

Armed with this knowledge I can now move forward and script the DNS +and DHCP updates I wanted to do.