af1062e5650118b28b0257d567d2c9317393430e
[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 if len (sys.argv) != 2:
8     raise (Error ("disk [image]"))
9 disk = sys.argv[1]
10
11 g = guestfs.GuestFS ()
12 g.add_drive_opts (disk, readonly=1)
13
14 g.launch ()
15
16 roots = g.inspect_os ()
17 if len (roots) == 0:
18     raise (Error ("inspect_vm: no operating systems found"))
19
20 for root in roots:
21     mps = g.inspect_get_mountpoints (root)
22     def compare (a, b):
23         if len(a[0]) > len(b[0]):
24             return 1
25         elif len(a[0]) == len(b[0]):
26             return 0
27         else:
28             return -1
29     mps.sort (compare)
30     for mp_dev in mps:
31         try:
32             g.mount_ro (mp_dev[1], mp_dev[0])
33         except RuntimeError as msg:
34             print "%s (ignored)" % msg
35
36     apps = g.inspect_list_applications (root)
37     for app in apps:
38         if re.search ('firefox', app['app_name'], re.I):
39             print ("%s: Firefox version %s" %
40                    (disk, app['app_version']))
41
42     g.umount_all ()