X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=source4%2Fscripting%2Fbin%2Fsamba3dump;h=157a708ff6744af9304769004d9a45543bc3cc7a;hb=cc30cb5e24160d107b67936d71f54645d9b3d23f;hp=0aa54d91cc1e806168649fcdd4354ea031916020;hpb=3c22677a8ce1635d7e055f954153dec4c1796b17;p=samba.git diff --git a/source4/scripting/bin/samba3dump b/source4/scripting/bin/samba3dump index 0aa54d91cc1..157a708ff67 100755 --- a/source4/scripting/bin/samba3dump +++ b/source4/scripting/bin/samba3dump @@ -1,8 +1,8 @@ #!/usr/bin/python # -# Dump Samba3 data -# Copyright Jelmer Vernooij 2005-2007 -# Released under the GNU GPL v3 or later +# Dump Samba3 data +# Copyright Jelmer Vernooij 2005-2007 +# Released under the GNU GPL v3 or later # import optparse @@ -13,160 +13,154 @@ import samba.samba3 parser = optparse.OptionParser("provision []") parser.add_option("--format", type="choice", metavar="FORMAT", - choices=["full", "summary"]) + choices=["full", "summary"]) opts, args = parser.parse_args() if opts.format is None: - opts.format = "summary" + opts.format = "summary" def print_header(txt): - print "\n%s" % txt - print "==========================================" + print "\n%s" % txt + print "=" * len(txt) def print_samba3_policy(pol): - print_header("Account Policies") - print "Min password length: %d" % pol.min_password_length - print "Password history length: %d" % pol.password_history - if pol.user_must_logon_to_change_password: - print "User must logon to change password: %d" % pol.user_must_logon_to_change_password - if pol.maximum_password_age: - print "Maximum password age: %d" % pol.maximum_password_age - if pol.minimum_password_age: - print "Minimum password age: %d" % pol.minimum_password_age - if pol.lockout_duration: - print "Lockout duration: %d" % pol.lockout_duration - if pol.reset_count_minutes: - print "Reset Count Minutes: %d" % pol.reset_count_minutes - if pol.bad_lockout_minutes: - print "Bad Lockout Minutes: %d" % pol.bad_lockout_minutes - if pol.disconnect_time: - print "Disconnect Time: %d" % pol.disconnect_time - if pol.refuse_machine_password_change: - print "Refuse Machine Password Change: %d" % pol.refuse_machine_password_change - -def print_samba3_sam(samba3): - print_header("SAM Database") - - for a in samba3.samaccounts: - print "%d: %s" % a.user_rid, a.username - -def print_samba3_shares(samba3): - print_header("Configured shares") - for s in samba3.shares: - print "--- %s ---" % s.name - - for p in s.parameters: - print "\t%s = %s" % (p.name, p.value) - - print "" + print_header("Account Policies") + print "Min password length: %d" % pol.min_password_length + print "Password history length: %d" % pol.password_history + if pol.user_must_logon_to_change_password: + print "User must logon to change password: %d" % pol.user_must_logon_to_change_password + if pol.maximum_password_age: + print "Maximum password age: %d" % pol.maximum_password_age + if pol.minimum_password_age: + print "Minimum password age: %d" % pol.minimum_password_age + if pol.lockout_duration: + print "Lockout duration: %d" % pol.lockout_duration + if pol.reset_count_minutes: + print "Reset Count Minutes: %d" % pol.reset_count_minutes + if pol.bad_lockout_minutes: + print "Bad Lockout Minutes: %d" % pol.bad_lockout_minutes + if pol.disconnect_time: + print "Disconnect Time: %d" % pol.disconnect_time + if pol.refuse_machine_password_change: + print "Refuse Machine Password Change: %d" % pol.refuse_machine_password_change + +def print_samba3_sam(samdb): + print_header("SAM Database") + + for user in samdb: + print "%s" % user + +def print_samba3_shares(shares): + print_header("Configured shares") + for s in shares: + print "--- %s ---" % s.name + + for p in s: + print "\t%s = %s" % (p.key, p.value) + + print "" def print_samba3_secrets(secrets): - print_header("Secrets") - - if secrets.get_auth_user(): - print "IPC Credentials:" - if secrets.get_auth_user(): - print " User: %s\n" % secrets.get_auth_user() - if secrets.get_auth_password(): - print " Password: %s\n" % secrets.get_auth_password() - if secrets.get_auth_domain(): - print " Domain: %s\n" % secrets.get_auth_domain() - - if len(list(secrets.ldap_dns())) > 0: - print "LDAP passwords:" - for dn in secrets.ldap_dns(): - print "\t%s -> %s" % (dn, secrets.get_ldap_bind_pw(dn)) - print "" - - print "Domains:" - for domain in secrets.domains(): - print "\t--- %s ---" % domain - print "\tSID: %s" % secrets.get_sid(domain) - print "\tGUID: %s" % secrets.get_dom_guid(domain) - print "\tPlaintext pwd: %s" % secrets.get_machine_password(domain) - if secrets.get_machine_last_change_time(domain): - print "\tLast Changed: %lu" % secrets.get_machine_last_change_time(domain) - if secrets.get_machine_sec_channel_type(domain): - print "\tSecure Channel Type: %d\n" % secrets.get_machine_sec_channel_type(domain) - - print "Trusted domains:" - for td in secrets.trusted_domains(): - print td + print_header("Secrets") + + if secrets.get_auth_user(): + print "IPC Credentials:" + if secrets.get_auth_user(): + print " User: %s\n" % secrets.get_auth_user() + if secrets.get_auth_password(): + print " Password: %s\n" % secrets.get_auth_password() + if secrets.get_auth_domain(): + print " Domain: %s\n" % secrets.get_auth_domain() + + if len(list(secrets.ldap_dns())) > 0: + print "LDAP passwords:" + for dn in secrets.ldap_dns(): + print "\t%s -> %s" % (dn, secrets.get_ldap_bind_pw(dn)) + print "" + + print "Domains:" + for domain in secrets.domains(): + print "\t--- %s ---" % domain + print "\tSID: %s" % secrets.get_sid(domain) + print "\tGUID: %s" % secrets.get_dom_guid(domain) + print "\tPlaintext pwd: %s" % secrets.get_machine_password(domain) + if secrets.get_machine_last_change_time(domain): + print "\tLast Changed: %lu" % secrets.get_machine_last_change_time(domain) + if secrets.get_machine_sec_channel_type(domain): + print "\tSecure Channel Type: %d\n" % secrets.get_machine_sec_channel_type(domain) + + print "Trusted domains:" + for td in secrets.trusted_domains(): + print td def print_samba3_regdb(regdb): - print_header("Registry") + print_header("Registry") - for k in regdb.keys(): - print "%s" % k - for v in regdb.values(k): - print "\t%s: type %d, length %d" % (v.name, v.type, v.data.length) + for k in regdb.keys(): + print "%s" % k + for v in regdb.values(k): + print "\t%s: type %d, length %d" % (v.name, v.type, v.data.length) def print_samba3_winsdb(winsdb): - print_header("WINS Database") + print_header("WINS Database") - for name in winsdb: - (ttl, ips, nb_flags) = winsdb[name] - print "%s, nb_flags: %s, ttl: %lu, %d ips, fst: %s" % (name, nb_flags, ttl, len(ips), ips[0]) + for name in winsdb: + (ttl, ips, nb_flags) = winsdb[name] + print "%s, nb_flags: %s, ttl: %lu, %d ips, fst: %s" % (name, nb_flags, ttl, len(ips), ips[0]) def print_samba3_groupmappings(groupdb): - print_header("Group Mappings") - - for sid in groupdb.groupsids(): - print "\t--- Group: %s ---" % g.nt_name - print "\tComment: %s" % g.comment - print "\tGID: %d" % g.gid - print "\tSID Name Use: %d" % g.sid_name_use - print "\tSID: %s\n" % g.sid + print_header("Group Mappings") + + for sid in groupdb.groupsids(): + print "\t--- Group: %s ---" % sid def print_samba3_aliases(groupdb): - for a in groupdb.aliases: - print "\t--- Alias: %s ---" % a.sid - for m in a.members: - print "\t%s" % m + for sid in groupdb.aliases(): + print "\t--- Alias: %s ---" % sid def print_samba3_idmapdb(idmapdb): - print_header("Winbindd SID<->GID/UID mappings") + print_header("Winbindd SID<->GID/UID mappings") - print "User High Water Mark: %d" % idmapdb.user_hwm - print "Group High Water Mark: %d\n" % idmapdb.group_hwm + print "User High Water Mark: %d" % idmapdb.get_user_hwm() + print "Group High Water Mark: %d\n" % idmapdb.get_group_hwm() - for e in idmapdb.mappings: - if e.type == e.IDMAP_GROUP: - print "%s -> GID %d" % (e.sid, e.unix_id) - else: - print "%s -> UID %d" % (e.sid, e.unix_id) + for uid in idmapdb.uids(): + print "%s -> UID %d" % (idmapdb.get_user_sid(uid), uid) + + for gid in idmapdb.gids(): + print "%s -> GID %d" % (idmapdb.get_group_sid(gid), gid) def print_samba3(samba3): - print_samba3_policy(samba3.get_policy_db()) - print_samba3_winsdb(samba3.get_wins_db()) - print_samba3_regdb(samba3.get_registry()) - print_samba3_secrets(samba3.get_secrets_db()) - groupdb = samba3.get_groupmapping_db() - print_samba3_groupmappings(groupdb) - print_samba3_aliases(groupdb) - print_samba3_idmapdb(samba3.get_idmap_db()) - print_samba3_shares(samba3) - print_samba3_sam(samba3) + print_samba3_policy(samba3.get_policy_db()) + print_samba3_winsdb(samba3.get_wins_db()) + print_samba3_regdb(samba3.get_registry()) + print_samba3_secrets(samba3.get_secrets_db()) + print_samba3_idmapdb(samba3.get_idmap_db()) + print_samba3_sam(samba3.get_sam_db()) + groupdb = samba3.get_groupmapping_db() + print_samba3_groupmappings(groupdb) + print_samba3_aliases(groupdb) + print_samba3_shares(samba3.get_shares()) def print_samba3_summary(samba3): - print "WINS db entries: %d" % len(samba3.get_wins_db()) - print "Registry key count: %d" % len(samba3.get_registry()) - groupdb = samba3.get_groupmapping_db() - print "Groupmap count: %d" % len(list(groupdb.groupsids())) - print "Alias count: %d" % len(list(groupdb.aliases())) - idmapdb = samba3.get_idmap_db() - print "Idmap count: %d" % (len(list(idmapdb.uids())) + len(list(idmapdb.gids()))) + print "WINS db entries: %d" % len(samba3.get_wins_db()) + print "Registry key count: %d" % len(samba3.get_registry()) + groupdb = samba3.get_groupmapping_db() + print "Groupmap count: %d" % len(list(groupdb.groupsids())) + print "Alias count: %d" % len(list(groupdb.aliases())) + idmapdb = samba3.get_idmap_db() + print "Idmap count: %d" % (len(list(idmapdb.uids())) + len(list(idmapdb.gids()))) libdir = args[0] if len(args) > 1: - smbconf = args[2] + smbconf = args[2] else: - smbconf = os.path.join(libdir, "smb.conf") + smbconf = os.path.join(libdir, "smb.conf") samba3 = samba.samba3.Samba3(libdir, smbconf) if opts.format == "summary": - print_samba3_summary(samba3) + print_samba3_summary(samba3) elif opts.format == "full": - print_samba3(samba3) + print_samba3(samba3)