VBScript で書かれていますので、拡張子を vbs として保存してください。
このソースの解説はこちら。【IDM】Active Directory から OpenLDAP への パスワードの同期 その2 ~ ADSI でパスワードを同期する
-------------------------------
On Error Resume Next
strDomain = "dc=example64,dc=jp"strUserName = "testuser01"strPassword = "ABC123@"strLdapServer = "fedora01.example-fedora.jp"strLdapUser = "uid=" & strUserName & ",ou=People,dc=example-fedora,dc=jp"strManagerDN = "cn=Manager,dc=example-fedora,dc=jp"strManagerPassword = "password"
'ユーザーを検索Set objConnection = CreateObject("ADODB.Connection")objConnection.Open "Provider=ADsDSOObject;"Set objCommand = CreateObject("ADODB.Command")objCommand.ActiveConnection = objConnectionobjCommand.CommandText = _ "<LDAP://" & strDomain & ">;" & _ "(&(objectCategory=person)(objectClass=user)" & _ "(sAMAccountName=" & strUserName & "));" & _ "DistinguishedName,sAMAccountName,unixUserPassword;" & _ "subtree"Set objRecordSet = objCommand.Execute
'ユーザーのパスワード変更Do Until objRecordset.EOF strDN = objRecordset.Fields("DistinguishedName") objRecordset.movenextLoopSet objUser = GetObject("LDAP://" & strDN)objUser.SetPassword strPasswordobjUser.SetInfo
'AD内でunixUserPassword が同期されるまで待つWscript.Sleep 3000
'変更後のパスワードを取得Set objRecordSet2 = objCommand.Execute
Do Until objRecordset2.EOF arrUNIXUSERPASSWORD = objRecordset2.Fields("unixUserPassword") For i = 1 To LenB(arrUNIXUSERPASSWORD(0)) strA = MidB(arrUNIXUSERPASSWORD(0), i, 1) strB = AscB(strA) strUnixUserPassword = strUnixUserPassword & Chr(strB) Next objRecordset2.movenextLoop
'OpenLDAPに接続set objLDAP = GetObject("LDAP:")set objUser = objLDAP.OpenDSObject("LDAP://" & strLdapServer & "/" & strLdapUser, _ strManagerDN, _ strManagerPassword, _ 0)
'パスワードを変更objUser.Put "userPassword", "{CRYPT}" & strUnixUserPasswordobjUser.SetInfo
'パスワードが変更されたかどうかをチェックset objChkUser = objLDAP.OpenDSObject("LDAP://" & strLdapServer, _ strLdapUser, _ strPassword, _ 0)
If Err.Number = 0 then Wscript.Echo "パスワードは正しく同期されました(" & strLdapUser & ")"else Wscript.Echo "パスワードの同期でエラーが発生しました(" & strLdapUser & ")"End If
昔、「おしいれのぼうけん」ていう絵本がありました。いまでもトラウマです...ねずみばぁさん...。 そんなノスタルジックな想いはともかく、現実に戻って OpenLDAP にパスワードを同期する方法について考察します。
ある調べごとがあり、「'watch node'」 という単語を 某検索エンジンに放り込んだところ、以下の表示が。 もしかして: 'watch nude ' し、し、しっ、失礼なっっっ! それはともかく