本文整理汇总了Python中samba.samdb.SamDB.schema_format_value方法的典型用法代码示例。如果您正苦于以下问题:Python SamDB.schema_format_value方法的具体用法?Python SamDB.schema_format_value怎么用?Python SamDB.schema_format_value使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类samba.samdb.SamDB
的用法示例。
在下文中一共展示了SamDB.schema_format_value方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: run
# 需要导入模块: from samba.samdb import SamDB [as 别名]
# 或者: from samba.samdb.SamDB import schema_format_value [as 别名]
def run(self, *accounts, **kwargs):
sambaopts = kwargs.get("sambaopts")
credopts = kwargs.get("credopts")
versionpts = kwargs.get("versionopts")
server = kwargs.get("server")
accounts_file = kwargs.get("file")
if server is None:
raise Exception("You must supply a server")
if accounts_file is not None:
accounts = []
if accounts_file == "-":
for line in sys.stdin:
accounts.append(line.strip())
else:
for line in open(accounts_file, 'r'):
accounts.append(line.strip())
lp = sambaopts.get_loadparm()
creds = credopts.get_credentials(lp, fallback_machine=True)
# connect to the remote and local SAMs
samdb = SamDB(url="ldap://%s" % server,
session_info=system_session(),
credentials=creds, lp=lp)
local_samdb = SamDB(url=None, session_info=system_session(),
credentials=creds, lp=lp)
destination_dsa_guid = misc.GUID(local_samdb.get_ntds_GUID())
repl = drs_Replicate("ncacn_ip_tcp:%s[seal,print]" % server, lp, creds,
local_samdb, destination_dsa_guid)
for account in accounts:
# work out the source and destination GUIDs
dc_ntds_dn = samdb.get_dsServiceName()
res = samdb.search(base=dc_ntds_dn, scope=ldb.SCOPE_BASE, attrs=["invocationId"])
source_dsa_invocation_id = misc.GUID(local_samdb.schema_format_value("objectGUID", res[0]["invocationId"][0]))
dn = self.get_dn(samdb, account)
self.outf.write("Replicating DN %s\n" % dn)
local_samdb.transaction_start()
try:
repl.replicate(dn, source_dsa_invocation_id, destination_dsa_guid,
exop=drsuapi.DRSUAPI_EXOP_REPL_SECRET, rodc=True)
except Exception, e:
local_samdb.transaction_cancel()
raise CommandError("Error replicating DN %s" % dn, e)
local_samdb.transaction_commit()
示例2: MatchRulesTests
# 需要导入模块: from samba.samdb import SamDB [as 别名]
# 或者: from samba.samdb.SamDB import schema_format_value [as 别名]
#.........这里部分代码省略.........
res1 = self.ldb.search(self.ou_groups,
scope=SCOPE_SUBTREE,
expression="member:1.2.840.113556.1.4.1941:=cn=u2,%s" % self.ou_users)
self.assertTrue(len(res1) == 3)
def test_u3_groups(self):
res1 = self.ldb.search(self.ou_groups,
scope=SCOPE_SUBTREE,
expression="member=cn=u3,%s" % self.ou_users)
self.assertTrue(len(res1) == 1)
res1 = self.ldb.search(self.ou_groups,
scope=SCOPE_SUBTREE,
expression="member:1.2.840.113556.1.4.1941:=cn=u3,%s" % self.ou_users)
self.assertTrue(len(res1) == 2)
def test_u4_groups(self):
res1 = self.ldb.search(self.ou_groups,
scope=SCOPE_SUBTREE,
expression="member=cn=u4,%s" % self.ou_users)
self.assertTrue(len(res1) == 1)
res1 = self.ldb.search(self.ou_groups,
scope=SCOPE_SUBTREE,
expression="member:1.2.840.113556.1.4.1941:=cn=u4,%s" % self.ou_users)
self.assertTrue(len(res1) == 1)
def test_extended_dn(self):
res1 = self.ldb.search("cn=u1,%s" % self.ou_users,
scope=SCOPE_BASE,
expression="objectClass=*",
attrs=['objectSid', 'objectGUID'])
self.assertTrue(len(res1) == 1)
sid = self.ldb.schema_format_value("objectSid", res1[0]["objectSid"][0])
guid = self.ldb.schema_format_value("objectGUID", res1[0]['objectGUID'][0])
res1 = self.ldb.search(self.ou_groups,
scope=SCOPE_SUBTREE,
expression="member=<SID=%s>" % sid)
self.assertTrue(len(res1) == 1)
res1 = self.ldb.search(self.ou_groups,
scope=SCOPE_SUBTREE,
expression="member=<GUID=%s>" % guid)
self.assertTrue(len(res1) == 1)
res1 = self.ldb.search(self.ou_groups,
scope=SCOPE_SUBTREE,
expression="member:1.2.840.113556.1.4.1941:=<SID=%s>" % sid)
self.assertTrue(len(res1) == 4)
res1 = self.ldb.search(self.ou_groups,
scope=SCOPE_SUBTREE,
expression="member:1.2.840.113556.1.4.1941:=<GUID=%s>" % guid)
self.assertTrue(len(res1) == 4)
def test_object_dn_binary(self):
res1 = self.ldb.search(self.ou_computers,
scope=SCOPE_SUBTREE,
expression="msDS-RevealedUsers=B:8:01010101:cn=c3,%s" % self.ou_computers)
self.assertTrue(len(res1) == 1)
res1 = self.ldb.search(self.ou_computers,
scope=SCOPE_SUBTREE,
expression="msDS-RevealedUsers:1.2.840.113556.1.4.1941:=B:8:01010101:cn=c3,%s" % self.ou_computers)
self.assertTrue(len(res1) == 2)
def test_one_way_links(self):
res1 = self.ldb.search(self.ou,
scope=SCOPE_SUBTREE,
expression="addressBookRoots2=cn=c1,%s" % self.ou_computers)
self.assertTrue(len(res1) == 1)
res1 = self.ldb.search(self.ou,
scope=SCOPE_SUBTREE,
expression="addressBookRoots2:1.2.840.113556.1.4.1941:=cn=c1,%s" % self.ou_computers)
self.assertTrue(len(res1) == 2)
def test_not_linked_attrs(self):
res1 = self.ldb.search(self.base_dn,
scope=SCOPE_BASE,
expression="wellKnownObjects=B:32:aa312825768811d1aded00c04fd8d5cd:CN=computers,%s" % self.base_dn)
self.assertTrue(len(res1) == 1)
res1 = self.ldb.search(self.base_dn,
scope=SCOPE_BASE,
expression="wellKnownObjects:1.2.840.113556.1.4.1941:=B:32:aa312825768811d1aded00c04fd8d5cd:CN=computers,%s" % self.base_dn)
self.assertTrue(len(res1) == 0)
res1 = self.ldb.search(self.ou,
scope=SCOPE_SUBTREE,
expression="otherWellKnownObjects=B:32:00000000000000000000000000000004:OU=o4,OU=o3,OU=o2,OU=o1,%s" % self.ou)
self.assertTrue(len(res1) == 1)
res1 = self.ldb.search(self.ou,
scope=SCOPE_SUBTREE,
expression="otherWellKnownObjects:1.2.840.113556.1.4.1941:=B:32:00000000000000000000000000000004:OU=o4,OU=o3,OU=o2,OU=o1,%s" % self.ou)
self.assertTrue(len(res1) == 0)
示例3: cmd_drs_replicate
# 需要导入模块: from samba.samdb import SamDB [as 别名]
# 或者: from samba.samdb.SamDB import schema_format_value [as 别名]
class cmd_drs_replicate(Command):
"""Replicate a naming context between two DCs."""
synopsis = "%prog <destinationDC> <sourceDC> <NC> [options]"
takes_optiongroups = {
"sambaopts": options.SambaOptions,
"versionopts": options.VersionOptions,
"credopts": options.CredentialsOptions,
}
takes_args = ["DEST_DC", "SOURCE_DC", "NC"]
takes_options = [
Option("--add-ref", help="use ADD_REF to add to repsTo on source", action="store_true"),
Option("--sync-forced", help="use SYNC_FORCED to force inbound replication", action="store_true"),
Option("--sync-all", help="use SYNC_ALL to replicate from all DCs", action="store_true"),
Option("--full-sync", help="resync all objects", action="store_true"),
Option("--local", help="pull changes directly into the local database (destination DC is ignored)", action="store_true"),
Option("--local-online", help="pull changes into the local database (destination DC is ignored) as a normal online replication", action="store_true"),
Option("--async-op", help="use ASYNC_OP for the replication", action="store_true"),
Option("--single-object", help="Replicate only the object specified, instead of the whole Naming Context (only with --local)", action="store_true"),
]
def drs_local_replicate(self, SOURCE_DC, NC, full_sync=False,
single_object=False,
sync_forced=False):
'''replicate from a source DC to the local SAM'''
self.server = SOURCE_DC
drsuapi_connect(self)
self.local_samdb = SamDB(session_info=system_session(), url=None,
credentials=self.creds, lp=self.lp)
self.samdb = SamDB(url="ldap://%s" % self.server,
session_info=system_session(),
credentials=self.creds, lp=self.lp)
# work out the source and destination GUIDs
res = self.local_samdb.search(base="", scope=ldb.SCOPE_BASE,
attrs=["dsServiceName"])
self.ntds_dn = res[0]["dsServiceName"][0]
res = self.local_samdb.search(base=self.ntds_dn, scope=ldb.SCOPE_BASE,
attrs=["objectGUID"])
self.ntds_guid = misc.GUID(
self.samdb.schema_format_value("objectGUID",
res[0]["objectGUID"][0]))
source_dsa_invocation_id = misc.GUID(self.samdb.get_invocation_id())
dest_dsa_invocation_id = misc.GUID(self.local_samdb.get_invocation_id())
destination_dsa_guid = self.ntds_guid
exop = drsuapi.DRSUAPI_EXOP_NONE
if single_object:
exop = drsuapi.DRSUAPI_EXOP_REPL_OBJ
full_sync = True
self.samdb.transaction_start()
repl = drs_utils.drs_Replicate("ncacn_ip_tcp:%s[seal]" % self.server,
self.lp,
self.creds, self.local_samdb,
dest_dsa_invocation_id)
# Work out if we are an RODC, so that a forced local replicate
# with the admin pw does not sync passwords
rodc = self.local_samdb.am_rodc()
try:
(num_objects, num_links) = repl.replicate(NC,
source_dsa_invocation_id,
destination_dsa_guid,
rodc=rodc,
full_sync=full_sync,
exop=exop,
sync_forced=sync_forced)
except Exception as e:
raise CommandError("Error replicating DN %s" % NC, e)
self.samdb.transaction_commit()
if full_sync:
self.message("Full Replication of all %d objects and %d links "
"from %s to %s was successful." %
(num_objects, num_links, SOURCE_DC,
self.local_samdb.url))
else:
self.message("Incremental replication of %d objects and %d links "
"from %s to %s was successful." %
(num_objects, num_links, SOURCE_DC,
self.local_samdb.url))
def run(self, DEST_DC, SOURCE_DC, NC,
add_ref=False, sync_forced=False, sync_all=False, full_sync=False,
local=False, local_online=False, async_op=False, single_object=False,
sambaopts=None, credopts=None, versionopts=None):
self.server = DEST_DC
self.lp = sambaopts.get_loadparm()
#.........这里部分代码省略.........