OpenLDAPからCSVファイルを作成(bash)

OpenLDAPに登録されているアカウントのID、ハッシュ化されたパスワードをテキストCSVファイルに抽出したい、そんなときに作ったスクリプトです。

方針としては、まずOpenLDAPからLDIF形式でアカウント情報を吐き出し、 そのファイルをAWKを使ってCSV形式に成形します。

本体スクリプトの"ldap2csv.sh"

-----------------
"ldap2csv.sh"
-----------------

#!/bin/sh
#
# Dump LDAP database

/usr/sbin/slapcat -l /root/ldap2csv/temp.ldif

sleep 3

# Convert ldif format to csv
/bin/awk -F ': ' -f /root/ldap2csv/ldif2csv.awk < /root/ldap2csv/temp.ldif > /root/ldap2csv/data.csv

-----------------

そして本体スクリプトの中にあるLDIFからCSV形式へ成形するスクリプト"ldif2csv.awk"。
LDIF形式にDumpした際、ハッシュ化されたパスワードが2行になってしまっているため、それを吸収する必要があった。2行になる場合は改行後に半角スペースが来るため、それを利用した。 また、不要な半角スペースを削除sub(/^[ ]+/, "", str)する。

-----------------
"ldif2csv.awk"
-----------------

# Create CSV from LDIF file
#
BEGIN {
name = ""
password = ""
bit = 0
str = ""
printf(" name,password\n");
}

/^userpassword:/ {
password=$2
bit=1
}

/^ / {
str=$1
sub(/^[ ]+/, "", str)
if(bit==1) password = password "" str
}

/^cn: / {
name=$2
bit=0
}

/^dn/ {
if(name != "" && password != "") printf("%s,%s\n",name,password)
name = ""
password = ""
}

# Capture last dn
END {
if(name != "" && password != "") printf("%s,%s\n",name,password)
}

-----------------

IT/インフラエンジニアの地位とスキル向上のために

関連記事

IT 技術の進化はとどまることを知りません。矢継ぎ早に新たな技術が出てきたり、数年前の技術が時代遅れになったりと、IT エンジニアは勉強し続ける運命のようです。 それをどう思うかはあなた次第。 ビジネスの基本は『付加価値を与える[…]

IMG
関連記事

nesuke の考える NW エンジニアの2つの道 ネットワークエンジニアには 2 つの道があります。 1 つはネットワーク構築一筋で、L4 までをひたすらきっちりと構築していく道。 もう 1 つはネットワークを軸として深堀し[…]

IMG