Calm Hill My Random Thoughts

Quick & Dirty Generating Usernames and Passwords

ရုံးမှာ Bulk Sales လုပ်တဲ့အခါ User Accounts တွေအများကြီး Generate လုပ်ပေးရတတ်တယ်။ တစ်ခါတစ်ခါ Generate လုပ်ရတာ လွယ်တယ်တော့မဟုတ်ဘူး Request လုပ်တဲ့အချိန်မှ Generate လုပ်ပေးရင် အစပိုင်းမှာမသိသာပေမယ့် Existing User များလာတဲ့အခါတော့ Generate လုပ်လိုက်တဲ့ Username ဟာ Existing မဖြစ်အောင်စစ်ရတာက Overload ဖြစ်လာတော့ ပိုကြာပါတယ် အဲဒါနဲ့တစ်ခါထဲပဲ Unique Name တွေ အများကြီးကိုကြိုပြီး Generate လုပ်ထား Table တစ်ခုပဲအပိုထည့်ထားပြီး လိုသလောက်ယူသုံးတာက ပထမအကြိမ် အလုပ်ရှုပ်ပေမယ့် ရည်ရှည်အတွက်တော့ အဆင်ပြေပါတယ်။

Alphanumeric ပဲ Generate လုပ်ဖို့လိုတဲ့အတွက် pwgen ကိုပဲ Username ရော Password အတွက်ပါ သုံးလိုက်တယ်။ Username အတွက်က Unique ဖြစ်ဖို့လိုတဲ့အတွက် pwgen ကထွက်လာတဲ့ Result ကို sort နဲ့ Sorting စီလိုက်ပြီးတော့ ထပ်နေတာတွေ ဖယ်လိုက်တယ်။ ထပ်နေတာတွေ ဖယ်လိုက်ရင် လိုသလောက်အရေအတွက်မရတဲ့အတွက် လိုတာထက်ပိုပြီး Generate လုပ်ပြီးတော့မှ ကြံတဲ့ဖန်တဲ့အနေနဲ့ head နဲ့လိုသလောက်ကို အတိအကျ ပြန်ဖြတ်လိုက်တယ်။

pwgen -1ABn 6 1000000 | sort -uR | head -n 500000 > username.txt
pwgen -1ABn 8 500000 > password.txt

Username တွေကိုလိုသလောက်ရပြီဆိုတော့ Password အတွက်က Unique ဖြစ်ဖို့မလိုတဲ့အတွက် pwgen နဲ့ပဲ လိုသလောက်အရေအတွက် အတိအကျကို Generate လုပ်ယူလိုက်တယ်။ ပြဿနာက Username နဲ့ Password က သီးသန့်စီ Generate လုပ်တဲ့အတွက် ဖိုင်တစ်ခုစီဖြစ်နေတယ် Import လုပ်ဖို့အတွက်က SQL Statement ဒါမှမဟုတ် Delimited File တစ်ခုခုတော့ဖြစ်ရမယ်ဆိုတော့ Outfile နှစ်ခုကို Vertically ဆက်ချင်တာဖြစ်နေတယ်။ အဲဒီအလုပ်အတွက်က paste ဆိုတဲ့ Program ကိုသုံးရင်ရတယ် Delimiter ကိုတော့ Comma ပဲသုံးလိုက်တယ်။ ကိုယ့်သုံးမယ့် Database ထဲကို Loading လုပ်တာကတော့ တစ်ခုနဲ့တစ်ခု တူမှာမဟုတ်ဘူး MySQL သုံးတဲ့အတွက် mysqlimport နဲ့ Loading လုပ်ထားတယ်။

paste -d ',' username.txt password.txt > temp_users
mysqlimport --user=username --password=password --local --fields-terminated-by=, mydatabase temp_users