Add FOSDEM 2012 talk.
[libguestfs-talks.git] / 2012-fosdem / 500.d / audit.py
1 #!/usr/bin/python
2
3 import re
4 import sys
5 import guestfs
6
7 def mount_disk (g, root):
8     mps = g.inspect_get_mountpoints (root)
9     def compare (a, b):
10         if len(a[0]) > len(b[0]):
11             return 1
12         elif len(a[0]) == len(b[0]):
13             return 0
14         else:
15             return -1
16     mps.sort (compare)
17     for mp_dev in mps:
18         try:
19             g.mount_ro (mp_dev[1], mp_dev[0])
20         except RuntimeError as msg:
21             print "%s (ignored)" % msg
22
23 if len (sys.argv) != 2:
24     raise (Error ("disk [image]"))
25 disk = sys.argv[1]
26
27 g = guestfs.GuestFS ()
28 g.add_drive_opts (disk, readonly=1)
29
30 g.launch ()
31
32 roots = g.inspect_os ()
33 if len (roots) == 0:
34     raise (Error ("inspect_vm: no operating systems found"))
35
36 for root in roots:
37     mount_disk (g, root)
38
39     apps = g.inspect_list_applications (root)
40     for app in apps:
41         if re.search ('firefox', app['app_name'], re.IGNORECASE):
42             print ("%s: Firefox version %s" % (disk, app['app_version']))
43
44     g.umount_all ()