mirror of
https://github.com/samba-team/samba.git
synced 2025-08-05 12:22:11 +03:00
samba.netcmd: Formatting fixes, break lines.
This commit is contained in:
@ -55,7 +55,7 @@ class cmd_delegation_show(Command):
|
||||
# TODO once I understand how, use the domain info to naildown
|
||||
# to the correct domain
|
||||
(cleanedaccount, realm, domain) = _get_user_realm_domain(accountname)
|
||||
|
||||
|
||||
res = sam.search(expression="sAMAccountName=%s" %
|
||||
ldb.binary_encode(cleanedaccount),
|
||||
scope=ldb.SCOPE_SUBTREE,
|
||||
@ -63,7 +63,7 @@ class cmd_delegation_show(Command):
|
||||
if len(res) == 0:
|
||||
raise CommandError("Unable to find account name '%s'" % accountname)
|
||||
assert(len(res) == 1)
|
||||
|
||||
|
||||
uac = int(res[0].get("userAccountControl")[0])
|
||||
allowed = res[0].get("msDS-AllowedToDelegateTo")
|
||||
|
||||
@ -91,7 +91,8 @@ class cmd_delegation_for_any_service(Command):
|
||||
|
||||
takes_args = ["accountname", "onoff"]
|
||||
|
||||
def run(self, accountname, onoff, credopts=None, sambaopts=None, versionopts=None):
|
||||
def run(self, accountname, onoff, credopts=None, sambaopts=None,
|
||||
versionopts=None):
|
||||
|
||||
on = False
|
||||
if onoff == "on":
|
||||
@ -133,7 +134,8 @@ class cmd_delegation_for_any_protocol(Command):
|
||||
|
||||
takes_args = ["accountname", "onoff"]
|
||||
|
||||
def run(self, accountname, onoff, credopts=None, sambaopts=None, versionopts=None):
|
||||
def run(self, accountname, onoff, credopts=None, sambaopts=None,
|
||||
versionopts=None):
|
||||
|
||||
on = False
|
||||
if onoff == "on":
|
||||
@ -175,7 +177,8 @@ class cmd_delegation_add_service(Command):
|
||||
|
||||
takes_args = ["accountname", "principal"]
|
||||
|
||||
def run(self, accountname, principal, credopts=None, sambaopts=None, versionopts=None):
|
||||
def run(self, accountname, principal, credopts=None, sambaopts=None,
|
||||
versionopts=None):
|
||||
|
||||
lp = sambaopts.get_loadparm()
|
||||
creds = credopts.get_credentials(lp)
|
||||
@ -192,7 +195,7 @@ class cmd_delegation_add_service(Command):
|
||||
attrs=["msDS-AllowedToDelegateTo"])
|
||||
if len(res) == 0:
|
||||
raise CommandError("Unable to find account name '%s'" % accountname)
|
||||
assert(len(res) == 1)
|
||||
assert(len(res) == 1)
|
||||
|
||||
msg = ldb.Message()
|
||||
msg.dn = res[0].dn
|
||||
@ -218,7 +221,8 @@ class cmd_delegation_del_service(Command):
|
||||
|
||||
takes_args = ["accountname", "principal"]
|
||||
|
||||
def run(self, accountname, principal, credopts=None, sambaopts=None, versionopts=None):
|
||||
def run(self, accountname, principal, credopts=None, sambaopts=None,
|
||||
versionopts=None):
|
||||
|
||||
lp = sambaopts.get_loadparm()
|
||||
creds = credopts.get_credentials(lp)
|
||||
@ -235,7 +239,7 @@ class cmd_delegation_del_service(Command):
|
||||
attrs=["msDS-AllowedToDelegateTo"])
|
||||
if len(res) == 0:
|
||||
raise CommandError("Unable to find account name '%s'" % accountname)
|
||||
assert(len(res) == 1)
|
||||
assert(len(res) == 1)
|
||||
|
||||
msg = ldb.Message()
|
||||
msg.dn = res[0].dn
|
||||
|
@ -35,6 +35,7 @@ def dns_connect(server, lp, creds):
|
||||
dns_conn = dnsserver.dnsserver(binding_str, lp, creds)
|
||||
return dns_conn
|
||||
|
||||
|
||||
def bool_string(flag):
|
||||
if flag == 0:
|
||||
ret = 'FALSE'
|
||||
@ -44,6 +45,7 @@ def bool_string(flag):
|
||||
ret = 'UNKNOWN (0x%x)' % flag
|
||||
return ret
|
||||
|
||||
|
||||
def enum_string(module, enum_defs, value):
|
||||
ret = None
|
||||
for e in enum_defs:
|
||||
@ -54,6 +56,7 @@ def enum_string(module, enum_defs, value):
|
||||
ret = 'UNKNOWN (0x%x)' % value
|
||||
return ret
|
||||
|
||||
|
||||
def bitmap_string(module, bitmap_defs, value):
|
||||
ret = ''
|
||||
for b in bitmap_defs:
|
||||
@ -63,42 +66,50 @@ def bitmap_string(module, bitmap_defs, value):
|
||||
ret = 'NONE'
|
||||
return ret
|
||||
|
||||
|
||||
def boot_method_string(boot_method):
|
||||
enum_defs = [ 'DNS_BOOT_METHOD_UNINITIALIZED', 'DNS_BOOT_METHOD_FILE',
|
||||
'DNS_BOOT_METHOD_REGISTRY', 'DNS_BOOT_METHOD_DIRECTORY' ]
|
||||
return enum_string(dnsserver, enum_defs, boot_method)
|
||||
|
||||
|
||||
def name_check_flag_string(check_flag):
|
||||
enum_defs = [ 'DNS_ALLOW_RFC_NAMES_ONLY', 'DNS_ALLOW_NONRFC_NAMES',
|
||||
'DNS_ALLOW_MULTIBYTE_NAMES', 'DNS_ALLOW_ALL_NAMES' ]
|
||||
return enum_string(dnsserver, enum_defs, check_flag)
|
||||
|
||||
|
||||
def zone_type_string(zone_type):
|
||||
enum_defs = [ 'DNS_ZONE_TYPE_CACHE', 'DNS_ZONE_TYPE_PRIMARY',
|
||||
'DNS_ZONE_TYPE_SECONDARY', 'DNS_ZONE_TYPE_STUB',
|
||||
'DNS_ZONE_TYPE_FORWARDER', 'DNS_ZONE_TYPE_SECONDARY_CACHE' ]
|
||||
return enum_string(dnsp, enum_defs, zone_type)
|
||||
|
||||
|
||||
def zone_update_string(zone_update):
|
||||
enum_defs = [ 'DNS_ZONE_UPDATE_OFF', 'DNS_ZONE_UPDATE_SECURE',
|
||||
'DNS_ZONE_UPDATE_SECURE' ]
|
||||
return enum_string(dnsp, enum_defs, zone_update)
|
||||
|
||||
|
||||
def zone_secondary_security_string(security):
|
||||
enum_defs = [ 'DNS_ZONE_SECSECURE_NO_SECURITY', 'DNS_ZONE_SECSECURE_NS_ONLY',
|
||||
'DNS_ZONE_SECSECURE_LIST_ONLY', 'DNS_ZONE_SECSECURE_NO_XFER' ]
|
||||
return enum_string(dnsserver, enum_defs, security)
|
||||
|
||||
|
||||
def zone_notify_level_string(notify_level):
|
||||
enum_defs = [ 'DNS_ZONE_NOTIFY_OFF', 'DNS_ZONE_NOTIFY_ALL_SECONDARIES',
|
||||
'DNS_ZONE_NOTIFY_LIST_ONLY' ]
|
||||
return enum_string(dnsserver, enum_defs, notify_level)
|
||||
|
||||
|
||||
def dp_flags_string(dp_flags):
|
||||
bitmap_defs = [ 'DNS_DP_AUTOCREATED', 'DNS_DP_LEGACY', 'DNS_DP_DOMAIN_DEFAULT',
|
||||
'DNS_DP_FOREST_DEFAULT', 'DNS_DP_ENLISTED', 'DNS_DP_DELETED' ]
|
||||
return bitmap_string(dnsserver, bitmap_defs, dp_flags)
|
||||
|
||||
|
||||
def zone_flags_string(flags):
|
||||
bitmap_defs = [ 'DNS_RPC_ZONE_PAUSED', 'DNS_RPC_ZONE_SHUTDOWN',
|
||||
'DNS_RPC_ZONE_REVERSE', 'DNS_RPC_ZONE_AUTOCREATED',
|
||||
@ -107,6 +118,7 @@ def zone_flags_string(flags):
|
||||
'DNS_RPC_ZONE_READONLY']
|
||||
return bitmap_string(dnsserver, bitmap_defs, flags)
|
||||
|
||||
|
||||
def ip4_array_string(array):
|
||||
ret = []
|
||||
if not array:
|
||||
@ -116,6 +128,7 @@ def ip4_array_string(array):
|
||||
ret.append(addr)
|
||||
return ret
|
||||
|
||||
|
||||
def dns_addr_array_string(array):
|
||||
ret = []
|
||||
if not array:
|
||||
@ -132,6 +145,7 @@ def dns_addr_array_string(array):
|
||||
ret.append(addr)
|
||||
return ret
|
||||
|
||||
|
||||
def dns_type_flag(rec_type):
|
||||
rtype = rec_type.upper()
|
||||
if rtype == 'A':
|
||||
@ -158,6 +172,7 @@ def dns_type_flag(rec_type):
|
||||
raise CommandError('Unknown type of DNS record %s' % rec_type)
|
||||
return record_type
|
||||
|
||||
|
||||
def dns_client_version(cli_version):
|
||||
version = cli_version.upper()
|
||||
if version == 'W2K':
|
||||
@ -170,6 +185,7 @@ def dns_client_version(cli_version):
|
||||
raise CommandError('Unknown client version %s' % cli_version)
|
||||
return client_version
|
||||
|
||||
|
||||
def print_serverinfo(outf, typeid, serverinfo):
|
||||
outf.write(' dwVersion : 0x%x\n' % serverinfo.dwVersion)
|
||||
outf.write(' fBootMethod : %s\n' % boot_method_string(serverinfo.fBootMethod))
|
||||
@ -384,7 +400,9 @@ class ARecord(dnsserver.DNS_RPC_RECORD):
|
||||
self._ip_addr = ip_addr[:]
|
||||
self.data = self._ip_addr
|
||||
|
||||
|
||||
class AAAARecord(dnsserver.DNS_RPC_RECORD):
|
||||
|
||||
def __init__(self, ip6_addr, serial=1, ttl=900, rank=dnsp.DNS_RANK_ZONE,
|
||||
node_flag=0):
|
||||
super(AAAARecord, self).__init__()
|
||||
@ -395,7 +413,9 @@ class AAAARecord(dnsserver.DNS_RPC_RECORD):
|
||||
self._ip6_addr = ip6_addr[:]
|
||||
self.data = self._ip6_addr
|
||||
|
||||
|
||||
class PTRRecord(dnsserver.DNS_RPC_RECORD):
|
||||
|
||||
def __init__(self, ptr, serial=1, ttl=900, rank=dnsp.DNS_RANK_ZONE,
|
||||
node_flag=0):
|
||||
super(PTRRecord, self).__init__()
|
||||
@ -409,7 +429,9 @@ class PTRRecord(dnsserver.DNS_RPC_RECORD):
|
||||
ptr_name.len = len(ptr)
|
||||
self.data = ptr_name
|
||||
|
||||
|
||||
class CNameRecord(dnsserver.DNS_RPC_RECORD):
|
||||
|
||||
def __init__(self, cname, serial=1, ttl=900, rank=dnsp.DNS_RANK_ZONE,
|
||||
node_flag=0):
|
||||
super(CNameRecord, self).__init__()
|
||||
@ -423,7 +445,9 @@ class CNameRecord(dnsserver.DNS_RPC_RECORD):
|
||||
cname_name.len = len(cname)
|
||||
self.data = cname_name
|
||||
|
||||
|
||||
class NSRecord(dnsserver.DNS_RPC_RECORD):
|
||||
|
||||
def __init__(self, dns_server, serial=1, ttl=900, rank=dnsp.DNS_RANK_ZONE,
|
||||
node_flag=0):
|
||||
super(NSRecord, self).__init__()
|
||||
@ -437,7 +461,9 @@ class NSRecord(dnsserver.DNS_RPC_RECORD):
|
||||
ns.len = len(dns_server)
|
||||
self.data = ns
|
||||
|
||||
|
||||
class MXRecord(dnsserver.DNS_RPC_RECORD):
|
||||
|
||||
def __init__(self, mail_server, preference, serial=1, ttl=900,
|
||||
rank=dnsp.DNS_RANK_ZONE, node_flag=0):
|
||||
super(MXRecord, self).__init__()
|
||||
@ -452,7 +478,9 @@ class MXRecord(dnsserver.DNS_RPC_RECORD):
|
||||
mx.nameExchange.len = len(mail_server)
|
||||
self.data = mx
|
||||
|
||||
|
||||
class SOARecord(dnsserver.DNS_RPC_RECORD):
|
||||
|
||||
def __init__(self, mname, rname, serial=1, refresh=900, retry=600,
|
||||
expire=86400, minimum=3600, ttl=3600, rank=dnsp.DNS_RANK_ZONE,
|
||||
node_flag=dnsp.DNS_RPC_FLAG_AUTH_ZONE_ROOT):
|
||||
@ -474,7 +502,9 @@ class SOARecord(dnsserver.DNS_RPC_RECORD):
|
||||
soa.ZoneAdministratorEmail.len = len(rname)
|
||||
self.data = soa
|
||||
|
||||
|
||||
class SRVRecord(dnsserver.DNS_RPC_RECORD):
|
||||
|
||||
def __init__(self, target, port, priority=0, weight=100, serial=1, ttl=900,
|
||||
rank=dnsp.DNS_RANK_ZONE, node_flag=0):
|
||||
super(SRVRecord, self).__init__()
|
||||
@ -491,7 +521,9 @@ class SRVRecord(dnsserver.DNS_RPC_RECORD):
|
||||
srv.nameTarget.len = len(target)
|
||||
self.data = srv
|
||||
|
||||
|
||||
class TXTRecord(dnsserver.DNS_RPC_RECORD):
|
||||
|
||||
def __init__(self, slist, serial=1, ttl=900, rank=dnsp.DNS_RANK_ZONE,
|
||||
node_flag=0):
|
||||
super(TXTRecord, self).__init__()
|
||||
@ -576,16 +608,9 @@ def dns_record_match(dns_conn, server, zone, name, record_type, data):
|
||||
select_flags = dnsserver.DNS_RPC_VIEW_AUTHORITY_DATA
|
||||
|
||||
try:
|
||||
buflen, res = dns_conn.DnssrvEnumRecords2(dnsserver.DNS_CLIENT_VERSION_LONGHORN,
|
||||
0,
|
||||
server,
|
||||
zone,
|
||||
name,
|
||||
None,
|
||||
record_type,
|
||||
select_flags,
|
||||
None,
|
||||
None)
|
||||
buflen, res = dns_conn.DnssrvEnumRecords2(
|
||||
dnsserver.DNS_CLIENT_VERSION_LONGHORN, 0, server, zone, name, None,
|
||||
record_type, select_flags, None, None)
|
||||
except RuntimeError, e:
|
||||
return None
|
||||
|
||||
@ -667,18 +692,16 @@ class cmd_serverinfo(Command):
|
||||
choices=['w2k','dotnet','longhorn'], dest='cli_ver'),
|
||||
]
|
||||
|
||||
def run(self, server, cli_ver, sambaopts=None, credopts=None, versionopts=None):
|
||||
def run(self, server, cli_ver, sambaopts=None, credopts=None,
|
||||
versionopts=None):
|
||||
self.lp = sambaopts.get_loadparm()
|
||||
self.creds = credopts.get_credentials(self.lp)
|
||||
dns_conn = dns_connect(server, self.lp, self.creds)
|
||||
|
||||
client_version = dns_client_version(cli_ver)
|
||||
|
||||
typeid, res = dns_conn.DnssrvQuery2(client_version,
|
||||
0,
|
||||
server,
|
||||
None,
|
||||
'ServerInfo')
|
||||
typeid, res = dns_conn.DnssrvQuery2(client_version, 0, server,
|
||||
None, 'ServerInfo')
|
||||
print_serverinfo(self.outf, typeid, res)
|
||||
|
||||
|
||||
@ -701,17 +724,15 @@ class cmd_zoneinfo(Command):
|
||||
choices=['w2k','dotnet','longhorn'], dest='cli_ver'),
|
||||
]
|
||||
|
||||
def run(self, server, zone, cli_ver, sambaopts=None, credopts=None, versionopts=None):
|
||||
def run(self, server, zone, cli_ver, sambaopts=None, credopts=None,
|
||||
versionopts=None):
|
||||
self.lp = sambaopts.get_loadparm()
|
||||
self.creds = credopts.get_credentials(self.lp)
|
||||
dns_conn = dns_connect(server, self.lp, self.creds)
|
||||
|
||||
client_version = dns_client_version(cli_ver)
|
||||
|
||||
typeid, res = dns_conn.DnssrvQuery2(client_version,
|
||||
0,
|
||||
server,
|
||||
zone,
|
||||
typeid, res = dns_conn.DnssrvQuery2(client_version, 0, server, zone,
|
||||
'ZoneInfo')
|
||||
print_zoneinfo(self.outf, typeid, res)
|
||||
|
||||
@ -783,9 +804,7 @@ class cmd_zonelist(Command):
|
||||
client_version = dns_client_version(cli_ver)
|
||||
|
||||
typeid, res = dns_conn.DnssrvComplexOperation2(client_version,
|
||||
0,
|
||||
server,
|
||||
None,
|
||||
0, server, None,
|
||||
'EnumZones',
|
||||
dnsserver.DNSSRV_TYPEID_DWORD,
|
||||
request_filter)
|
||||
@ -850,13 +869,8 @@ class cmd_zonecreate(Command):
|
||||
zone_create_info.fAging = 0
|
||||
zone_create_info.dwDpFlags = dnsserver.DNS_DP_DOMAIN_DEFAULT
|
||||
|
||||
res = dns_conn.DnssrvOperation2(client_version,
|
||||
0,
|
||||
server,
|
||||
None,
|
||||
0,
|
||||
'ZoneCreate',
|
||||
typeid,
|
||||
res = dns_conn.DnssrvOperation2(client_version, 0, server, None,
|
||||
0, 'ZoneCreate', typeid,
|
||||
zone_create_info)
|
||||
self.outf.write('Zone %s created successfully\n' % zone)
|
||||
|
||||
@ -874,7 +888,8 @@ class cmd_zonedelete(Command):
|
||||
"credopts": options.CredentialsOptions,
|
||||
}
|
||||
|
||||
def run(self, server, zone, sambaopts=None, credopts=None, versionopts=None):
|
||||
def run(self, server, zone, sambaopts=None, credopts=None,
|
||||
versionopts=None):
|
||||
|
||||
self.lp = sambaopts.get_loadparm()
|
||||
self.creds = credopts.get_credentials(self.lp)
|
||||
@ -882,11 +897,7 @@ class cmd_zonedelete(Command):
|
||||
|
||||
zone = zone.lower()
|
||||
res = dns_conn.DnssrvOperation2(dnsserver.DNS_CLIENT_VERSION_LONGHORN,
|
||||
0,
|
||||
server,
|
||||
zone,
|
||||
0,
|
||||
'DeleteZoneFromDs',
|
||||
0, server, zone, 0, 'DeleteZoneFromDs',
|
||||
dnsserver.DNSSRV_TYPEID_NULL,
|
||||
None)
|
||||
self.outf.write('Zone %s delete successfully\n' % zone)
|
||||
@ -922,9 +933,10 @@ class cmd_query(Command):
|
||||
action='store_true', dest='only_children')
|
||||
]
|
||||
|
||||
def run(self, server, zone, name, rtype, authority=False, cache=False, glue=False,
|
||||
root=False, additional=False, no_children=False, only_children=False,
|
||||
sambaopts=None, credopts=None, versionopts=None):
|
||||
def run(self, server, zone, name, rtype, authority=False, cache=False,
|
||||
glue=False, root=False, additional=False, no_children=False,
|
||||
only_children=False, sambaopts=None, credopts=None,
|
||||
versionopts=None):
|
||||
record_type = dns_type_flag(rtype)
|
||||
|
||||
select_flags = 0
|
||||
@ -955,16 +967,9 @@ class cmd_query(Command):
|
||||
self.creds = credopts.get_credentials(self.lp)
|
||||
dns_conn = dns_connect(server, self.lp, self.creds)
|
||||
|
||||
buflen, res = dns_conn.DnssrvEnumRecords2(dnsserver.DNS_CLIENT_VERSION_LONGHORN,
|
||||
0,
|
||||
server,
|
||||
zone,
|
||||
name,
|
||||
None,
|
||||
record_type,
|
||||
select_flags,
|
||||
None,
|
||||
None)
|
||||
buflen, res = dns_conn.DnssrvEnumRecords2(
|
||||
dnsserver.DNS_CLIENT_VERSION_LONGHORN, 0, server, zone, name,
|
||||
None, record_type, select_flags, None, None)
|
||||
print_dnsrecords(self.outf, res)
|
||||
|
||||
|
||||
@ -981,7 +986,8 @@ class cmd_roothints(Command):
|
||||
"credopts": options.CredentialsOptions,
|
||||
}
|
||||
|
||||
def run(self, server, name='.', sambaopts=None, credopts=None, versionopts=None):
|
||||
def run(self, server, name='.', sambaopts=None, credopts=None,
|
||||
versionopts=None):
|
||||
record_type = dnsp.DNS_TYPE_NS
|
||||
select_flags = (dnsserver.DNS_RPC_VIEW_ROOT_HINT_DATA |
|
||||
dnsserver.DNS_RPC_VIEW_ADDITIONAL_DATA)
|
||||
@ -990,16 +996,9 @@ class cmd_roothints(Command):
|
||||
self.creds = credopts.get_credentials(self.lp)
|
||||
dns_conn = dns_connect(server, self.lp, self.creds)
|
||||
|
||||
buflen, res = dns_conn.DnssrvEnumRecords2(dnsserver.DNS_CLIENT_VERSION_LONGHORN,
|
||||
0,
|
||||
server,
|
||||
'..RootHints',
|
||||
name,
|
||||
None,
|
||||
record_type,
|
||||
select_flags,
|
||||
None,
|
||||
None)
|
||||
buflen, res = dns_conn.DnssrvEnumRecords2(
|
||||
dnsserver.DNS_CLIENT_VERSION_LONGHORN, 0, server, '..RootHints',
|
||||
name, None, record_type, select_flags, None, None)
|
||||
print_dnsrecords(self.outf, res)
|
||||
|
||||
|
||||
@ -1027,7 +1026,8 @@ class cmd_add_record(Command):
|
||||
"credopts": options.CredentialsOptions,
|
||||
}
|
||||
|
||||
def run(self, server, zone, name, rtype, data, sambaopts=None, credopts=None, versionopts=None):
|
||||
def run(self, server, zone, name, rtype, data, sambaopts=None,
|
||||
credopts=None, versionopts=None):
|
||||
|
||||
if rtype.upper() not in ('A','AAAA','PTR','CNAME','NS','MX','SRV','TXT'):
|
||||
raise CommandError('Adding record of type %s is not supported' % rtype)
|
||||
@ -1039,7 +1039,8 @@ class cmd_add_record(Command):
|
||||
self.creds = credopts.get_credentials(self.lp)
|
||||
dns_conn = dns_connect(server, self.lp, self.creds)
|
||||
|
||||
rec_match = dns_record_match(dns_conn, server, zone, name, record_type, data)
|
||||
rec_match = dns_record_match(dns_conn, server, zone, name, record_type,
|
||||
data)
|
||||
if rec_match is not None:
|
||||
raise CommandError('Record already exists')
|
||||
|
||||
@ -1047,12 +1048,7 @@ class cmd_add_record(Command):
|
||||
add_rec_buf.rec = rec
|
||||
|
||||
dns_conn.DnssrvUpdateRecord2(dnsserver.DNS_CLIENT_VERSION_LONGHORN,
|
||||
0,
|
||||
server,
|
||||
zone,
|
||||
name,
|
||||
add_rec_buf,
|
||||
None)
|
||||
0, server, zone, name, add_rec_buf, None)
|
||||
self.outf.write('Record added successfully\n')
|
||||
|
||||
|
||||
@ -1093,7 +1089,8 @@ class cmd_update_record(Command):
|
||||
self.creds = credopts.get_credentials(self.lp)
|
||||
dns_conn = dns_connect(server, self.lp, self.creds)
|
||||
|
||||
rec_match = dns_record_match(dns_conn, server, zone, name, record_type, olddata)
|
||||
rec_match = dns_record_match(dns_conn, server, zone, name, record_type,
|
||||
olddata)
|
||||
if not rec_match:
|
||||
raise CommandError('Record does not exist')
|
||||
|
||||
|
@ -22,8 +22,6 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
|
||||
|
||||
import samba.getopt as options
|
||||
import ldb
|
||||
import string
|
||||
@ -127,15 +125,16 @@ class cmd_domain_info(Command):
|
||||
lp = sambaopts.get_loadparm()
|
||||
try:
|
||||
res = netcmd_get_domain_infos_via_cldap(lp, None, address)
|
||||
print "Forest : %s" % res.forest
|
||||
print "Domain : %s" % res.dns_domain
|
||||
print "Netbios domain : %s" % res.domain_name
|
||||
print "DC name : %s" % res.pdc_dns_name
|
||||
print "DC netbios name : %s" % res.pdc_name
|
||||
print "Server site : %s" % res.server_site
|
||||
print "Client site : %s" % res.client_site
|
||||
except RuntimeError:
|
||||
raise CommandError("Invalid IP address '" + address + "'!")
|
||||
self.outf.write("Forest : %s\n" % res.forest)
|
||||
self.outf.write("Domain : %s\n" % res.dns_domain)
|
||||
self.outf.write("Netbios domain : %s\n" % res.domain_name)
|
||||
self.outf.write("DC name : %s\n" % res.pdc_dns_name)
|
||||
self.outf.write("DC netbios name : %s\n" % res.pdc_name)
|
||||
self.outf.write("Server site : %s\n" % res.server_site)
|
||||
self.outf.write("Client site : %s\n" % res.client_site)
|
||||
|
||||
|
||||
class cmd_domain_provision(Command):
|
||||
"""Promotes an existing domain member or NT4 PDC to an AD DC"""
|
||||
@ -220,38 +219,38 @@ class cmd_domain_provision(Command):
|
||||
takes_args = []
|
||||
|
||||
def run(self, sambaopts=None, credopts=None, versionopts=None,
|
||||
interactive = None,
|
||||
domain = None,
|
||||
domain_guid = None,
|
||||
domain_sid = None,
|
||||
ntds_guid = None,
|
||||
invocationid = None,
|
||||
host_name = None,
|
||||
host_ip = None,
|
||||
host_ip6 = None,
|
||||
adminpass = None,
|
||||
krbtgtpass = None,
|
||||
machinepass = None,
|
||||
dns_backend = None,
|
||||
dns_forwarder = None,
|
||||
dnspass = None,
|
||||
ldapadminpass = None,
|
||||
root = None,
|
||||
nobody = None,
|
||||
wheel = None,
|
||||
users = None,
|
||||
quiet = None,
|
||||
blank = None,
|
||||
ldap_backend_type = None,
|
||||
server_role = None,
|
||||
function_level = None,
|
||||
next_rid = None,
|
||||
partitions_only = None,
|
||||
targetdir = None,
|
||||
ol_mmr_urls = None,
|
||||
use_xattrs = None,
|
||||
use_ntvfs = None,
|
||||
use_rfc2307 = None):
|
||||
interactive=None,
|
||||
domain=None,
|
||||
domain_guid=None,
|
||||
domain_sid=None,
|
||||
ntds_guid=None,
|
||||
invocationid=None,
|
||||
host_name=None,
|
||||
host_ip=None,
|
||||
host_ip6=None,
|
||||
adminpass=None,
|
||||
krbtgtpass=None,
|
||||
machinepass=None,
|
||||
dns_backend=None,
|
||||
dns_forwarder=None,
|
||||
dnspass=None,
|
||||
ldapadminpass=None,
|
||||
root=None,
|
||||
nobody=None,
|
||||
wheel=None,
|
||||
users=None,
|
||||
quiet=None,
|
||||
blank=None,
|
||||
ldap_backend_type=None,
|
||||
server_role=None,
|
||||
function_level=None,
|
||||
next_rid=None,
|
||||
partitions_only=None,
|
||||
targetdir=None,
|
||||
ol_mmr_urls=None,
|
||||
use_xattrs=None,
|
||||
use_ntvfs=None,
|
||||
use_rfc2307=None):
|
||||
|
||||
self.logger = self.get_logger("provision")
|
||||
if quiet:
|
||||
@ -313,11 +312,11 @@ class cmd_domain_provision(Command):
|
||||
while True:
|
||||
adminpassplain = getpass("Administrator password: ")
|
||||
if not adminpassplain:
|
||||
print >>sys.stderr, "Invalid administrator password."
|
||||
self.errf.write("Invalid administrator password.\n")
|
||||
else:
|
||||
adminpassverify = getpass("Retype password: ")
|
||||
if not adminpassplain == adminpassverify:
|
||||
print >>sys.stderr, "Sorry, passwords do not match."
|
||||
self.errf.write("Sorry, passwords do not match.\n")
|
||||
else:
|
||||
adminpass = adminpassplain
|
||||
break
|
||||
@ -422,7 +421,6 @@ class cmd_domain_provision(Command):
|
||||
handle.close()
|
||||
|
||||
self.logger.warning("No nameserver found in %s" % RESOLV_CONF)
|
||||
return None
|
||||
|
||||
|
||||
class cmd_domain_dcpromo(Command):
|
||||
@ -477,16 +475,15 @@ class cmd_domain_dcpromo(Command):
|
||||
join_DC(server=server, creds=creds, lp=lp, domain=domain,
|
||||
site=site, netbios_name=netbios_name, targetdir=targetdir,
|
||||
domain_critical_only=domain_critical_only,
|
||||
machinepass=machinepass, use_ntvfs=use_ntvfs, dns_backend=dns_backend,
|
||||
machinepass=machinepass, use_ntvfs=use_ntvfs,
|
||||
dns_backend=dns_backend,
|
||||
promote_existing=True)
|
||||
return
|
||||
elif role == "RODC":
|
||||
join_RODC(server=server, creds=creds, lp=lp, domain=domain,
|
||||
site=site, netbios_name=netbios_name, targetdir=targetdir,
|
||||
domain_critical_only=domain_critical_only,
|
||||
machinepass=machinepass, use_ntvfs=use_ntvfs, dns_backend=dns_backend,
|
||||
promote_existing=True)
|
||||
return
|
||||
else:
|
||||
raise CommandError("Invalid role '%s' (possible values: DC, RODC)" % role)
|
||||
|
||||
@ -541,38 +538,35 @@ class cmd_domain_join(Command):
|
||||
role = role.upper()
|
||||
|
||||
if role is None or role == "MEMBER":
|
||||
(join_password, sid, domain_name) = net.join_member(domain,
|
||||
netbios_name,
|
||||
LIBNET_JOIN_AUTOMATIC,
|
||||
machinepass=machinepass)
|
||||
(join_password, sid, domain_name) = net.join_member(
|
||||
domain, netbios_name, LIBNET_JOIN_AUTOMATIC,
|
||||
machinepass=machinepass)
|
||||
|
||||
self.outf.write("Joined domain %s (%s)\n" % (domain_name, sid))
|
||||
return
|
||||
self.errf.write("Joined domain %s (%s)\n" % (domain_name, sid))
|
||||
elif role == "DC":
|
||||
join_DC(server=server, creds=creds, lp=lp, domain=domain,
|
||||
site=site, netbios_name=netbios_name, targetdir=targetdir,
|
||||
domain_critical_only=domain_critical_only,
|
||||
machinepass=machinepass, use_ntvfs=use_ntvfs, dns_backend=dns_backend)
|
||||
return
|
||||
elif role == "RODC":
|
||||
join_RODC(server=server, creds=creds, lp=lp, domain=domain,
|
||||
site=site, netbios_name=netbios_name, targetdir=targetdir,
|
||||
domain_critical_only=domain_critical_only,
|
||||
machinepass=machinepass, use_ntvfs=use_ntvfs, dns_backend=dns_backend)
|
||||
return
|
||||
machinepass=machinepass, use_ntvfs=use_ntvfs,
|
||||
dns_backend=dns_backend)
|
||||
elif role == "SUBDOMAIN":
|
||||
netbios_domain = lp.get("workgroup")
|
||||
if parent_domain is None:
|
||||
parent_domain = ".".join(domain.split(".")[1:])
|
||||
join_subdomain(server=server, creds=creds, lp=lp, dnsdomain=domain, parent_domain=parent_domain,
|
||||
site=site, netbios_name=netbios_name, netbios_domain=netbios_domain, targetdir=targetdir,
|
||||
machinepass=machinepass, use_ntvfs=use_ntvfs, dns_backend=dns_backend)
|
||||
return
|
||||
join_subdomain(server=server, creds=creds, lp=lp, dnsdomain=domain,
|
||||
parent_domain=parent_domain, site=site,
|
||||
netbios_name=netbios_name, netbios_domain=netbios_domain,
|
||||
targetdir=targetdir, machinepass=machinepass,
|
||||
use_ntvfs=use_ntvfs, dns_backend=dns_backend)
|
||||
else:
|
||||
raise CommandError("Invalid role '%s' (possible values: MEMBER, DC, RODC, SUBDOMAIN)" % role)
|
||||
|
||||
|
||||
|
||||
class cmd_domain_demote(Command):
|
||||
"""Demote ourselves from the role of Domain Controller"""
|
||||
|
||||
@ -612,9 +606,9 @@ class cmd_domain_demote(Command):
|
||||
break
|
||||
|
||||
ntds_guid = samdb.get_ntds_GUID()
|
||||
msg = samdb.search(base=str(samdb.get_config_basedn()), scope=ldb.SCOPE_SUBTREE,
|
||||
expression="(objectGUID=%s)" % ntds_guid,
|
||||
attrs=['options'])
|
||||
msg = samdb.search(base=str(samdb.get_config_basedn()),
|
||||
scope=ldb.SCOPE_SUBTREE, expression="(objectGUID=%s)" % ntds_guid,
|
||||
attrs=['options'])
|
||||
if len(msg) == 0 or "options" not in msg[0]:
|
||||
raise CommandError("Failed to find options on %s" % ntds_guid)
|
||||
|
||||
@ -627,10 +621,11 @@ class cmd_domain_demote(Command):
|
||||
if len(res) != 0:
|
||||
raise CommandError("Current DC is still the owner of %d role(s), use the role command to transfer roles to another DC" % len(res))
|
||||
|
||||
print "Using %s as partner server for the demotion" % server
|
||||
self.errf.write("Using %s as partner server for the demotion\n" %
|
||||
server)
|
||||
(drsuapiBind, drsuapi_handle, supportedExtensions) = drsuapi_connect(server, lp, creds)
|
||||
|
||||
print "Desactivating inbound replication"
|
||||
self.errf.write("Desactivating inbound replication\n")
|
||||
|
||||
nmsg = ldb.Message()
|
||||
nmsg.dn = msg[0].dn
|
||||
@ -641,14 +636,17 @@ class cmd_domain_demote(Command):
|
||||
|
||||
if not (dsa_options & DS_NTDSDSA_OPT_DISABLE_OUTBOUND_REPL) and not samdb.am_rodc():
|
||||
|
||||
print "Asking partner server %s to synchronize from us" % server
|
||||
self.errf.write("Asking partner server %s to synchronize from us\n"
|
||||
% server)
|
||||
for part in (samdb.get_schema_basedn(),
|
||||
samdb.get_config_basedn(),
|
||||
samdb.get_root_basedn()):
|
||||
try:
|
||||
sendDsReplicaSync(drsuapiBind, drsuapi_handle, ntds_guid, str(part), drsuapi.DRSUAPI_DRS_WRIT_REP)
|
||||
except drsException, e:
|
||||
print "Error while demoting, re-enabling inbound replication"
|
||||
self.errf.write(
|
||||
"Error while demoting, "
|
||||
"re-enabling inbound replication\n")
|
||||
dsa_options ^= DS_NTDSDSA_OPT_DISABLE_INBOUND_REPL
|
||||
nmsg["options"] = ldb.MessageElement(str(dsa_options), ldb.FLAG_MOD_REPLACE, "options")
|
||||
samdb.modify(nmsg)
|
||||
@ -658,7 +656,7 @@ class cmd_domain_demote(Command):
|
||||
session_info=system_session(),
|
||||
credentials=creds, lp=lp)
|
||||
|
||||
print "Changing userControl and container"
|
||||
self.errf.write("Changing userControl and container\n")
|
||||
res = remote_samdb.search(base=str(remote_samdb.get_root_basedn()),
|
||||
expression="(&(objectClass=user)(sAMAccountName=%s$))" %
|
||||
netbios_name.upper(),
|
||||
@ -667,14 +665,16 @@ class cmd_domain_demote(Command):
|
||||
uac = int(str(res[0]["userAccountControl"]))
|
||||
|
||||
except Exception, e:
|
||||
print "Error while demoting, re-enabling inbound replication"
|
||||
dsa_options ^= DS_NTDSDSA_OPT_DISABLE_INBOUND_REPL
|
||||
nmsg["options"] = ldb.MessageElement(str(dsa_options), ldb.FLAG_MOD_REPLACE, "options")
|
||||
samdb.modify(nmsg)
|
||||
raise CommandError("Error while changing account control", e)
|
||||
self.errf.write(
|
||||
"Error while demoting, re-enabling inbound replication\n")
|
||||
dsa_options ^= DS_NTDSDSA_OPT_DISABLE_INBOUND_REPL
|
||||
nmsg["options"] = ldb.MessageElement(str(dsa_options), ldb.FLAG_MOD_REPLACE, "options")
|
||||
samdb.modify(nmsg)
|
||||
raise CommandError("Error while changing account control", e)
|
||||
|
||||
if (len(res) != 1):
|
||||
print "Error while demoting, re-enabling inbound replication"
|
||||
self.errf.write(
|
||||
"Error while demoting, re-enabling inbound replication")
|
||||
dsa_options ^= DS_NTDSDSA_OPT_DISABLE_INBOUND_REPL
|
||||
nmsg["options"] = ldb.MessageElement(str(dsa_options), ldb.FLAG_MOD_REPLACE, "options")
|
||||
samdb.modify(nmsg)
|
||||
@ -695,7 +695,8 @@ class cmd_domain_demote(Command):
|
||||
try:
|
||||
remote_samdb.modify(msg)
|
||||
except Exception, e:
|
||||
print "Error while demoting, re-enabling inbound replication"
|
||||
self.errf.write(
|
||||
"Error while demoting, re-enabling inbound replication")
|
||||
dsa_options ^= DS_NTDSDSA_OPT_DISABLE_INBOUND_REPL
|
||||
nmsg["options"] = ldb.MessageElement(str(dsa_options), ldb.FLAG_MOD_REPLACE, "options")
|
||||
samdb.modify(nmsg)
|
||||
@ -721,7 +722,8 @@ class cmd_domain_demote(Command):
|
||||
scope=ldb.SCOPE_ONELEVEL)
|
||||
|
||||
if i == 100:
|
||||
print "Error while demoting, re-enabling inbound replication"
|
||||
self.errf.write(
|
||||
"Error while demoting, re-enabling inbound replication\n")
|
||||
dsa_options ^= DS_NTDSDSA_OPT_DISABLE_INBOUND_REPL
|
||||
nmsg["options"] = ldb.MessageElement(str(dsa_options), ldb.FLAG_MOD_REPLACE, "options")
|
||||
samdb.modify(nmsg)
|
||||
@ -745,7 +747,8 @@ class cmd_domain_demote(Command):
|
||||
newdn = ldb.Dn(remote_samdb, "%s,%s" % (newrdn, str(computer_dn)))
|
||||
remote_samdb.rename(dc_dn, newdn)
|
||||
except Exception, e:
|
||||
print "Error while demoting, re-enabling inbound replication"
|
||||
self.errf.write(
|
||||
"Error while demoting, re-enabling inbound replication\n")
|
||||
dsa_options ^= DS_NTDSDSA_OPT_DISABLE_INBOUND_REPL
|
||||
nmsg["options"] = ldb.MessageElement(str(dsa_options), ldb.FLAG_MOD_REPLACE, "options")
|
||||
samdb.modify(nmsg)
|
||||
@ -767,7 +770,8 @@ class cmd_domain_demote(Command):
|
||||
try:
|
||||
sendRemoveDsServer(drsuapiBind, drsuapi_handle, server_dsa_dn, domain)
|
||||
except drsException, e:
|
||||
print "Error while demoting, re-enabling inbound replication"
|
||||
self.errf.write(
|
||||
"Error while demoting, re-enabling inbound replication\n")
|
||||
dsa_options ^= DS_NTDSDSA_OPT_DISABLE_INBOUND_REPL
|
||||
nmsg["options"] = ldb.MessageElement(str(dsa_options), ldb.FLAG_MOD_REPLACE, "options")
|
||||
samdb.modify(nmsg)
|
||||
@ -802,7 +806,7 @@ class cmd_domain_demote(Command):
|
||||
except ldb.LdbError, l:
|
||||
pass
|
||||
|
||||
self.outf.write("Demote successfull\n")
|
||||
self.errf.write("Demote successfull\n")
|
||||
|
||||
|
||||
class cmd_domain_level(Command):
|
||||
|
@ -16,8 +16,6 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
|
||||
|
||||
import os
|
||||
from samba import sites
|
||||
from samba.samdb import SamDB
|
||||
@ -92,7 +90,8 @@ class cmd_sites_delete(Command):
|
||||
samdb.transaction_commit()
|
||||
except sites.SiteException, e:
|
||||
samdb.transaction_cancel()
|
||||
raise CommandError("Error while removing site %s, error: %s" % (sitename, str(e)))
|
||||
raise CommandError(
|
||||
"Error while removing site %s, error: %s" % (sitename, str(e)))
|
||||
|
||||
self.outf.write("Site %s removed!\n" % sitename)
|
||||
|
||||
|
@ -53,9 +53,9 @@ class cmd_spn_list(Command):
|
||||
# to the correct domain
|
||||
(cleaneduser, realm, domain) = _get_user_realm_domain(user)
|
||||
self.outf.write(cleaneduser+"\n")
|
||||
res = sam.search(expression="samaccountname=%s" % ldb.binary_encode(cleaneduser),
|
||||
scope=ldb.SCOPE_SUBTREE,
|
||||
attrs=["servicePrincipalName"])
|
||||
res = sam.search(
|
||||
expression="samaccountname=%s" % ldb.binary_encode(cleaneduser),
|
||||
scope=ldb.SCOPE_SUBTREE, attrs=["servicePrincipalName"])
|
||||
if len(res) >0:
|
||||
spns = res[0].get("servicePrincipalName")
|
||||
found = False
|
||||
@ -89,23 +89,24 @@ class cmd_spn_add(Command):
|
||||
]
|
||||
takes_args = ["name", "user"]
|
||||
|
||||
def run(self, name, user, force=False, credopts=None, sambaopts=None, versionopts=None):
|
||||
def run(self, name, user, force=False, credopts=None, sambaopts=None,
|
||||
versionopts=None):
|
||||
lp = sambaopts.get_loadparm()
|
||||
creds = credopts.get_credentials(lp)
|
||||
paths = provision.provision_paths_from_lp(lp, lp.get("realm"))
|
||||
sam = SamDB(paths.samdb, session_info=system_session(),
|
||||
credentials=creds, lp=lp)
|
||||
res = sam.search(expression="servicePrincipalName=%s" % ldb.binary_encode(name),
|
||||
scope=ldb.SCOPE_SUBTREE,
|
||||
)
|
||||
res = sam.search(
|
||||
expression="servicePrincipalName=%s" % ldb.binary_encode(name),
|
||||
scope=ldb.SCOPE_SUBTREE)
|
||||
if len(res) != 0 and not force:
|
||||
raise CommandError("Service principal %s already"
|
||||
" affected to another user" % name)
|
||||
|
||||
(cleaneduser, realm, domain) = _get_user_realm_domain(user)
|
||||
res = sam.search(expression="samaccountname=%s" % ldb.binary_encode(cleaneduser),
|
||||
scope=ldb.SCOPE_SUBTREE,
|
||||
attrs=["servicePrincipalName"])
|
||||
res = sam.search(
|
||||
expression="samaccountname=%s" % ldb.binary_encode(cleaneduser),
|
||||
scope=ldb.SCOPE_SUBTREE, attrs=["servicePrincipalName"])
|
||||
if len(res) >0:
|
||||
res[0].dn
|
||||
msg = ldb.Message()
|
||||
@ -145,15 +146,17 @@ class cmd_spn_delete(Command):
|
||||
|
||||
takes_args = ["name", "user?"]
|
||||
|
||||
def run(self, name, user=None, credopts=None, sambaopts=None, versionopts=None):
|
||||
def run(self, name, user=None, credopts=None, sambaopts=None,
|
||||
versionopts=None):
|
||||
lp = sambaopts.get_loadparm()
|
||||
creds = credopts.get_credentials(lp)
|
||||
paths = provision.provision_paths_from_lp(lp, lp.get("realm"))
|
||||
sam = SamDB(paths.samdb, session_info=system_session(),
|
||||
credentials=creds, lp=lp)
|
||||
res = sam.search(expression="servicePrincipalName=%s" % ldb.binary_encode(name),
|
||||
scope=ldb.SCOPE_SUBTREE,
|
||||
attrs=["servicePrincipalName", "samAccountName"])
|
||||
res = sam.search(
|
||||
expression="servicePrincipalName=%s" % ldb.binary_encode(name),
|
||||
scope=ldb.SCOPE_SUBTREE,
|
||||
attrs=["servicePrincipalName", "samAccountName"])
|
||||
if len(res) >0:
|
||||
result = None
|
||||
if user is not None:
|
||||
|
@ -70,11 +70,10 @@ class cmd_testparm(Command):
|
||||
|
||||
takes_args = []
|
||||
|
||||
def run(self, sambaopts, versionopts,
|
||||
section_name=None, parameter_name=None,
|
||||
client_ip=None, client_name=None, verbose=False,
|
||||
suppress_prompt=None,
|
||||
show_all_parameters=False, server=None):
|
||||
def run(self, sambaopts, versionopts, section_name=None,
|
||||
parameter_name=None, client_ip=None, client_name=None,
|
||||
verbose=False, suppress_prompt=None, show_all_parameters=False,
|
||||
server=None):
|
||||
if server:
|
||||
raise NotImplementedError("--server not yet implemented")
|
||||
if show_all_parameters:
|
||||
@ -100,7 +99,8 @@ class cmd_testparm(Command):
|
||||
else:
|
||||
if section_name is not None or parameter_name is not None:
|
||||
if parameter_name is None:
|
||||
lp[section_name].dump(sys.stdout, lp.default_service, verbose)
|
||||
lp[section_name].dump(sys.stdout, lp.default_service,
|
||||
verbose)
|
||||
else:
|
||||
self.outf.write(lp.get(parameter_name, section_name)+"\n")
|
||||
else:
|
||||
@ -148,8 +148,9 @@ class cmd_testparm(Command):
|
||||
valid = False
|
||||
|
||||
if winbind_separator == '+':
|
||||
logger.error("'winbind separator = +' might cause problems with group "
|
||||
"membership.")
|
||||
logger.error(
|
||||
"'winbind separator = +' might cause problems with group "
|
||||
"membership.")
|
||||
valid = False
|
||||
|
||||
return valid
|
||||
@ -161,7 +162,8 @@ class cmd_testparm(Command):
|
||||
valid = True
|
||||
for s in lp.services():
|
||||
if len(s) > 12:
|
||||
logger.warning("You have some share names that are longer than 12 "
|
||||
logger.warning(
|
||||
"You have some share names that are longer than 12 "
|
||||
"characters. These may not be accessible to some older "
|
||||
"clients. (Eg. Windows9x, WindowsMe, and not listed in "
|
||||
"smbclient in Samba 3.0.)")
|
||||
|
@ -49,7 +49,8 @@ Example2 return the date and time of the local server.
|
||||
|
||||
takes_args = ["server_name?"]
|
||||
|
||||
def run(self, server_name=None, credopts=None, sambaopts=None, versionopts=None):
|
||||
def run(self, server_name=None, credopts=None, sambaopts=None,
|
||||
versionopts=None):
|
||||
lp = sambaopts.get_loadparm()
|
||||
creds = credopts.get_credentials(lp, fallback_machine=True)
|
||||
net = Net(creds, lp, server=credopts.ipaddress)
|
||||
|
@ -107,11 +107,13 @@ Example3 shows how to create a new user in the OrgUnit organizational unit.
|
||||
}
|
||||
|
||||
def run(self, username, password=None, credopts=None, sambaopts=None,
|
||||
versionopts=None, H=None, must_change_at_next_login=False, random_password=False,
|
||||
use_username_as_cn=False, userou=None, surname=None, given_name=None, initials=None,
|
||||
profile_path=None, script_path=None, home_drive=None, home_directory=None,
|
||||
versionopts=None, H=None, must_change_at_next_login=False,
|
||||
random_password=False, use_username_as_cn=False, userou=None,
|
||||
surname=None, given_name=None, initials=None, profile_path=None,
|
||||
script_path=None, home_drive=None, home_directory=None,
|
||||
job_title=None, department=None, company=None, description=None,
|
||||
mail_address=None, internet_address=None, telephone_number=None, physical_delivery_office=None):
|
||||
mail_address=None, internet_address=None, telephone_number=None,
|
||||
physical_delivery_office=None):
|
||||
|
||||
if random_password:
|
||||
password = generate_random_password(128, 255)
|
||||
@ -131,8 +133,7 @@ Example3 shows how to create a new user in the OrgUnit organizational unit.
|
||||
try:
|
||||
samdb = SamDB(url=H, session_info=system_session(),
|
||||
credentials=creds, lp=lp)
|
||||
samdb.newuser(username, password,
|
||||
force_password_change_at_next_login_req=must_change_at_next_login,
|
||||
samdb.newuser(username, password, force_password_change_at_next_login_req=must_change_at_next_login,
|
||||
useusernameascn=use_username_as_cn, userou=userou, surname=surname, givenname=given_name, initials=initials,
|
||||
profilepath=profile_path, homedrive=home_drive, scriptpath=script_path, homedirectory=home_directory,
|
||||
jobtitle=job_title, department=department, company=company, description=description,
|
||||
@ -147,10 +148,13 @@ Example3 shows how to create a new user in the OrgUnit organizational unit.
|
||||
class cmd_user_add(cmd_user_create):
|
||||
__doc__ = cmd_user_create.__doc__
|
||||
# take this print out after the add subcommand is removed.
|
||||
# the add subcommand is deprecated but left in for now to allow people to migrate to create
|
||||
# the add subcommand is deprecated but left in for now to allow people to
|
||||
# migrate to create
|
||||
|
||||
def run(self, *args, **kwargs):
|
||||
self.err.write("\nNote: samba-tool user add is deprecated. Please use samba-tool user create for the same function.\n")
|
||||
self.err.write(
|
||||
"Note: samba-tool user add is deprecated. "
|
||||
"Please use samba-tool user create for the same function.\n")
|
||||
return super(self, cmd_user_add).run(*args, **kwargs)
|
||||
|
||||
|
||||
@ -188,7 +192,8 @@ Example2 shows how to delete a user in the domain against the local server. su
|
||||
"versionopts": options.VersionOptions,
|
||||
}
|
||||
|
||||
def run(self, username, credopts=None, sambaopts=None, versionopts=None, H=None):
|
||||
def run(self, username, credopts=None, sambaopts=None, versionopts=None,
|
||||
H=None):
|
||||
lp = sambaopts.get_loadparm()
|
||||
creds = credopts.get_credentials(lp, fallback_machine=True)
|
||||
|
||||
|
Reference in New Issue
Block a user