perlスクリプトでCSVファイルから.htpasswdを生成する

Linuxサーバを触るなら、Perlスクリプトも多少触れるようになっておきたいものです。

Perlスクリプトを利用して、ユーザリストファイルからホームページアクセスようにユーザを作成します。htpasswdコマンドを利用してユーザを追加していきます。ユーザファイルは、カンマ区切りのcsvファイル、ユーザ名,パスワード形式で準備すればOKです。

vi htpasswd_add.pl
#!/usr/bin/perl -w
#users.txt file format username,password
#usage: htpasswd_add.pl users.txt
while () {
chop;
($uname,$pass) = split(/,/);
/usr/bin/htpasswd -b /usr/local/nginx/passwd/.htpasswd "$uname" "$pass"`;
print "add htpasswd $uname\n";
}
chmod 755 htpasswd_add.pl

下記の形式のパスワードファイルを作成します
users.txt
test1,pass1
test2,pass2

htpasswd_add.pl users.txt

 

スクリプト解説

chop コマンドにより、user 部分とpass部分にカンマ区切りで分ける
/usr/bin/htpasswd -b にて、パスワードまで読み込ませてアカウント作成(対話形式でない)

ユーザ追加で利用したファイルをそのまま使ってユーザを削除する

#!/usr/bin/perl -w
#users.txt file format username,password
# 本来ユーザ削除時にpasswordは必要ないのだが、ユーザ追加時に利用したファイルを流用する
#usage: htpasswd_del.pl users.txt
while (<>) {
   chop;
   ($uname,$pass) = split(/,/);
   `/usr/bin/htpasswd -D /usr/local/nginx/passwd/.htpasswd "$uname"`;
   print "del htpasswd $uname\n";
}

 

関連コンテンツ