http://www.extropia.com/tutorials/winperl/
윈도우에도 스크립트가 필요한데
배치파일을 쓰긴 너무 귀찮고, 뒤떨어진감이 있다. 함수가 뭐가 있는지도 잘 모르겠다.
vbscript도 좋기는 한데(MS에서 윈도우 스크립트 언어로 쓰려고 기능 확장을 많이 했다) 디버그 하기 힘들다. 어디서 에러가 나는지는 알려주는데 왜 나는지 정확히 알려주진 않기 때문이다. VB라는 언어가 그다지 아름답다고 느껴지지도 않고 ㅡ,.ㅡ;;
다음은 펄스크립트가 들어있는 디렉토리 내의 모든 ldif파일을 읽어들여서
AD에사용자 추가하는 스크립트다.
#/perl/bin/perl
# 흐름 설명
# 파일 목록을 가져온다.
# 각 파일에 대해..
# ldifde -i 파일명을 하여 AD에 사용자 추가
# 각 파일읠 첫 줄을 읽어서 "dn: "부분을 없애 $dn에 저장.
# dsmod user $x -pwd 초기비번 명령을 내려 비번 리셋도 해줄 것.
# 전제
# ldif파일은 모두 괜찮은 상태인 파일만 주어진다.
# ldif파일은 펄스크립트와 함께 들어있다.
# 스크립트가 들은 디렉토리에 done디렉토리가 만들어져 있다. (완료된 스크립트가 들어갈 곳)
# 스크립트와 unix2dos.exe가 함께 들어있어서 unix파일을 dos로 변환할 수 있다.
#---------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------
# 코드
#---------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------
# 디렉토리뒤지기 (while구문임. while구문 안쪽의 코드가 각 파일에 대해 행해지는 일.)
# <>는 한 줄 씩 읽는 operator임.
while (defined($next = <*.ldif>)) {
print "adding $next...\n";
# dosname을 next와 같게 설정한 다음 /을 \로 교체한다.
# 커맨드라인툴에서는 \가 디렉토리 구분자니까.
# $dosname = $next;
# $dosname =~ s/\//\\/g;
# 커맨드라인 명령 사용
system "unix2dos $next"; #unix파일이라 \n캐릭터가 깨진 것 보정
system "ldifde -i -f $next"; #AD에 entry 추가
# 이제 비번 리셋을 해보자.
open( FP, $next ); #파일 열고
$dn = <FP>; #한 줄 읽고
close( FP ); #파일 닫고
my $dn = substr( $dn, 4); #앞 4캐릭터 삭제
print "\n비번 리셋:\n";
system "dsmod user $dn -pwdinitialpasswd";
# 완료된 파일은 이동시킨다.
if (-e "done/$next") {
system "delete done\$next";
}
system "move $next done";
}