Add OS specific classes
[snf-image-creator] / image_creator / os_type / unix.py
1 #!/usr/bin/env python
2
3 import re
4
5 from image_creator.os_type import OSBase
6
7 class Unix(OSBase):
8     def get_metadata(self):
9         meta = super(Unix, self).get_metadata()
10         meta["USERS"] = " ".join(self.get_passworded_users())
11         return meta
12
13     def get_passworded_users(self):
14         
15         users = []
16
17         regexp = re.compile('(\S+):((?:!\S+)|(?:[^!*]\S+)|):(?:\S*:){6}')
18
19         for line in open('/etc/shadow', 'r').readlines():
20             match = regexp.match(line)
21             if not match:
22                 continue
23
24             user, passwd = match.groups()
25             if len(passwd) > 0 and passwd[0] == '!':
26                 print "Warning: %s is locked" % user
27             else:
28                 users.append(user)
29
30         return users
31
32     def cleanup_sensitive_data(self):
33         cleanup_userdata()
34         cleanup_tmp()
35         cleanup_log()
36
37 # vim: set sta sts=4 shiftwidth=4 sw=4 et ai :