Archive for 3月, 2014

LDAPユーザのパスワード変更について

月曜日, 3月 10th, 2014

ldappasswd -x -D “cn=Manager,o=company,dc=jp” -S -w ********* “uid=user,ou=People,dc=private,dc=jp”

-wに渡すパスワードはslappasswdで作成し、slapd.confに下記の様に書き込んだものです。
rootpw {SSHA}H6XYg0123ishfuaiosd234234dsfiaso

sedででかいファイルを扱うときについて

金曜日, 3月 7th, 2014

DNSのシステムにtinydnsというコンパクトな設計のDNSがあります。
ファイルで管理しているのですが、BINDと比べて設定行が非常に少ないのが特徴です。

例えばAレコードと逆引きの設定は一行で済みます。
=mod-cband.heteml.jp.:210.188.195.42

これだけです。あとはtinydnsに付属するzone-makeコマンドを実行するだけです。
コンテンツサーバーの設定自体はもう少しあるのですが、割愛します。

今日の本題はsedです。
上記のように簡単な記述でできるファイルも時が経てば巨大なファイルになります。
数百万行のファイルができてもおかしくありません。
このようなときに特定の行だけ削除したいなと思っても楽ではありません。

今回はagとsedで解決します。
想定としては数百万行のファイルのどこかにある”mod-cband.heteml.jp”というドメインを削除することです。
できるだけ、はやく。。

agのインストールはglidenoteさんのサイトを参考にするといいと思います。
$ag mod-cband.heteml.jp data #dataとはDNSのレコードが記述されているテキストファイルです。
1295883:=mod-cband.heteml.jp:210.188.195.42
1295884:Cmod-cband.heteml.jp:users87.heteml.jp.

記述されている行数が分かりました。
このときに直接消さない理由として確認をするためです。

$sed -i -e ‘1295881,1295882d’ data
これで指定した行だけが削除されるので、その後の数百万行の処理は飛ばされます。(sedは一行ずつ処理していくので指定がないと最下行まで見に行きます)
では本当に消えたのか指定した行だけを表示させてみます。

$sed -n ‘1295881,1295882p’ data
1295883:=not-cband.heteml.jp:210.188.195.42
1295884:Cnot-cband.heteml.jp:users87.heteml.jp.
このように次の行が繰り上がります。

※heteml.jpさんがtinydnsを使っているかどうかは分かりませんが、digなどで調査したレコードを参考に記述しています。

指定行から最終行までを抽出

$sed -n ‘1234,$p’ data

1234行目から最終行までをだしています。

最終行は$で表します。