つぶねこ

@もじらもーど。
↑recent | ↓old | 20 index | 100 index | 300 index | 記事5件 | 記事10件 | 記事20件 |最新5件 |FAQ | カテゴリ一覧 | Index |
2010/10/8 14:46
さいきんのNTユーザのダイヤルインの静的IPアドレスを割り当てる おまけ

 せっかくにゃのでbatで書いてみたデモ。
 ADのユーザのプロパティで、ダイヤルインの静的IPアドレスを割り当てを設定
@echo off

rem (add) %0 "CN=user1,OU=ou1,OU=ou2,DC=dom,DC=local" 123.123.123.123
rem (mod) %0 "CN=user1,OU=ou1,OU=ou2,DC=dom,DC=local" 123.123.123.123
rem (del) %0 "CN=user1,OU=ou1,OU=ou2,DC=dom,DC=local"

set dn="%~1"
set ip=%~2

if %dn%=="" (@echo ERR1 : %0 %* & pause & exit)

call :chk_dn %dn%
@echo dn ok

if "%ip%"=="" call :mode_del
if not "%ip%"=="" call :mode_edit
goto :EOF


:mode_del
call :attr_del %dn% "msRADIUSFramedIPAddress"
call :attr_del %dn% "msRASSavedFramedIPAddress"
exit /b

:mode_edit
setlocal
call :ip2dec ip_dec %ip%
echo %ip% = %ip_dec%
call :attr_edit %dn% "msRADIUSFramedIPAddress" "%ip_dec%"
call :attr_edit %dn% "msRASSavedFramedIPAddress" "%ip_dec%"
endlocal
exit /b

:chk_dn
ldifde -u -d %1 -r "(objectClass=user)" -f out.tmp || goto :chk_err %*
ldifde -u -d %1 -r "(objectClass=user)" -f out.tmp | find "1個のエントリがエクスポートされました" >NUL || goto :chk_err %*
type out.tmp | find %dn% >NUL || goto :chk_err %*
del out.tmp
exit /b
:chk_err
echo ERR2 %0 %*
pause
exit


:attr_edit
setlocal
set dn="%~1"
set attr="%~2"
set var="%~3"
call :is_exist_attr flag %dn% %attr%
if "%flag%"=="0" call :create_import_file_add %dn% %attr% %var% > tmp.txt
if "%flag%"=="1" call :create_import_file_modify %dn% %attr% %var% > tmp.txt
type tmp.txt || pause
call conv.cmd sjis2unicode tmp.txt tmp_u.txt
del tmp.txt
ldifde -u -i -f tmp_u.txt || (@echo ERR3 %0 %* & pause)
del tmp_u.txt
endlocal
exit /b

:attr_del
setlocal
set dn="%~1"
set attr="%~2"
call :is_exist_attr flag %dn% %attr%
if "%flag%"=="0" exit /b
if "%flag%"=="1" call :create_import_file_delete %dn% %attr% > tmp.txt
type tmp.txt || pause
call conv.cmd sjis2unicode tmp.txt tmp_u.txt
del tmp.txt
ldifde -u -i -f tmp_u.txt || (@echo ERR4 %0 %* & pause)
del tmp_u.txt
endlocal
exit /b

:create_import_file_add
@echo off
if "%~3"=="" (@echo ERR5 %0 %* & pause)
echo.|set /p x=dn: %~1
echo.
echo.|set /p x=changetype: modify
echo.
echo.|set /p x=add: %~2
echo.
echo.|set /p x=%~2: %~3
echo.
echo.|set /p x=-
echo.
exit /b


:create_import_file_modify
@echo off
if "%~3"=="" (@echo ERR6 %0 %* & pause)
echo.|set /p x=dn: %~1
echo.
echo.|set /p x=changetype: modify
echo.
echo.|set /p x=replace: %~2
echo.
echo.|set /p x=%~2: %~3
echo.
echo.|set /p x=-
echo.
exit /b

:create_import_file_delete
@echo off
if "%~2"=="" (@echo ERR7 %0 %* & pause)
echo.|set /p x=dn: %~1
echo.
echo.|set /p x=changetype: modify
echo.
echo.|set /p x=delete: %~2
echo.
echo.|set /p x=-
echo.
exit /b

:is_exist_attr
setlocal
set res=0
set dn=%2
set attr=%3
ldifde -u -d %dn% -l %attr% -f out.tmp >NUL
type out.tmp | find %attr% >NUL && set res=1
del out.tmp
endlocal & set %1=%res%
exit /b

:hex2dec
rem call :hex2dec var ffffffff
echo.|set /p x=Wscript.Echo ^^^&H%~2>tmp.vbs
echo.>>tmp.vbs
for /f "usebackq delims=" %%a in (`cscript //nologo tmp.vbs`) do set %1=%%a
del tmp.vbs
exit /b

:dec2hex
rem call :dec2hex var 123456
echo.|set /p x=Wscript.Echo Hex(%~2)>tmp.vbs
echo.>>tmp.vbs
for /f "usebackq delims=" %%a in (`cscript //nologo tmp.vbs`) do set %1=%%a
del tmp.vbs
exit /b

:format_dec
rem call :%0 var 4 99 -> var=0099
setlocal
set x=00000000000000000000000000000000000000000000000000%3
rem call echo %%x:~-^%2%%
call set ans=%%x:~-^%2%%
endlocal & set %1=%ans%
exit /b

:split_ip4
rem call %0 var1 var2 var3 var4 123.123.123.123
for /f "tokens=1,2,3,4 delims=." %%a in ("%~5") do set %1=%%a & set
%2=%%b & set %3=%%c & set %4=%%d
exit /b

:ip2dec
setlocal
rem call %0 var 10.1.0.255
set ip=%~2
call :split_ip4 var1 var2 var3 var4 %ip%
rem echo %var1% %var2% %var3% %var4%
call :dec2hex hvar1 %var1%
call :dec2hex hvar2 %var2%
call :dec2hex hvar3 %var3%
call :dec2hex hvar4 %var4%
rem echo %hvar1% %hvar2% %hvar3% %hvar4%
call :format_dec hvar1 2 %hvar1%
call :format_dec hvar2 2 %hvar2%
call :format_dec hvar3 2 %hvar3%
call :format_dec hvar4 2 %hvar4%
rem echo %hvar1% %hvar2% %hvar3% %hvar4%
call :hex2dec var %hvar1%%hvar2%%hvar3%%hvar4%
rem echo %var%
endlocal & set %1=%var%
exit /b
 setlocal的にゃ部分とかエラーチェックはいい加減にゃので、十分テストしておかにゃいとADのデータ全滅とかにゃり得る所が怖いね
 ipを4つ区切りで指定するとdwordにゃintにして書き込みみたいにゃことをしてるけど、かにゃり反則気味。
 あと今回は関係にゃいんだけど日本語関連でunicodeで出し入れしたほうがいいので、unicode変換とか呼んでます。
 
 で、ここまでしといて何だけど、vbsでGetObject("LDAP://〜〜)したほうが楽だねこれは(笑)



Index


2010/11/03 19:26 
2010/11/02 10:13 
2010/11/01 15:49 
2010/11/01 09:48 
2010/10/31 12:28 
2010/10/31 09:44 
2010/10/30 13:23 
2010/10/30 09:30 
2010/10/29 20:18 
2010/10/29 01:06 
2010/10/28 15:27 
2010/10/28 00:02 
2010/10/27 15:19 
2010/10/27 05:35 
2010/10/26 20:17 
2010/10/26 09:55 
2010/10/25 20:53 
2010/10/25 00:57 
2010/10/24 21:29 
2010/10/24 09:31 
2010/10/23 17:05 
2010/10/23 00:42 
2010/10/22 20:55 
2010/10/22 00:51 
2010/10/21 18:08 
2010/10/21 02:33 
2010/10/20 18:07 
2010/10/20 00:58 
2010/10/19 14:26 
2010/10/19 09:59 
2010/10/18 20:55 
2010/10/18 09:45 
2010/10/17 14:11 
2010/10/17 02:11 
2010/10/16 15:54 
2010/10/16 00:27 
2010/10/15 23:35 
2010/10/15 02:12 
2010/10/14 20:04 
2010/10/14 09:18 
2010/10/13 18:58 
2010/10/13 01:08 
2010/10/12 20:38 
2010/10/12 01:02 
2010/10/11 18:56 
2010/10/11 00:08 
2010/10/10 14:54 
2010/10/10 02:21 
2010/10/09 22:44 
2010/10/09 09:29 
2010/10/08 14:46 
2010/10/08 09:17 
2010/10/07 14:38 
2010/10/07 01:06 
2010/10/06 05:10 
2010/10/05 01:23 
2010/10/04 12:58 
2010/10/04 01:20 
2010/10/03 18:06 
2010/10/03 01:14 
2010/10/02 16:39 
2010/10/01 08:58 
2010/09/30 03:38 
2010/09/29 01:33 
2010/09/28 14:32 
2010/09/28 01:34 
2010/09/27 13:53 
2010/09/27 01:43 
2010/09/26 17:06 
2010/09/26 10:47 
2010/09/25 07:16 
2010/09/25 01:03 
2010/09/24 15:05 
2010/09/24 01:51 
2010/09/23 10:25 
2010/09/23 01:33 
2010/09/22 22:20 
2010/09/22 09:58 
2010/09/21 09:38 
2010/09/21 03:57 
2010/09/20 23:08 
2010/09/20 01:50 
2010/09/19 14:12 
2010/09/19 01:02 
2010/09/18 18:15 
2010/09/18 01:25 
2010/09/17 22:34 
2010/09/17 01:17 
2010/09/16 17:37 
2010/09/16 10:19 
2010/09/15 23:06 
2010/09/15 02:03 
2010/09/14 22:16 
2010/09/14 01:34 
2010/09/13 22:32 
2010/09/13 01:11 
2010/09/12 20:30 
2010/09/12 03:58 
2010/09/12 02:27 
2010/09/11 21:05 
2010/09/11 02:20 

↑recent | ↓old | 20 index | 100 index | 300 index | 記事5件 | 記事10件 | 記事20件 |最新5件 |FAQ | カテゴリ一覧 | Index |