Unixアカウント管理
研究室OBのアカウント停止作業。
Unixアカウントについては
usermod -L#停止 uesrmod -U #再開
で管理できます。
アカウント停止者のリスト表示をするコマンドはなかったかなと思い、Googleで調べていたら
なかなか斬新な記述を発見。
Unixにログインされるユーザーをリストする多くの命令がある。
.. (中略) ..
$猫/etc/passwd |切口- d: - f5
http://www.tech-faq.com/lang/ja/list-unix-users.shtml
猫って。。。
結局、自作スクリプトを書いて対処しました。
#!/usr/bin/ruby require 'optparse' require 'etc' $opt_user_type = "all" $min_user_id = 1000 $shadowfile = "/etc/shadow" ARGV.options {|opt| opt.on('-l', 'List locked user accounts') { $opt_user_type = "locked" } opt.on('-a', 'List available user accounts') { $opt_user_type = "available" } opt.parse! } user_list = {} Etc.passwd {|p| user_list[p.name] = {:id=>p.uid, :group=>Etc.getgrgid(p.gid).name} if p.uid >= $min_user_id } user_list.delete("nobody") case $opt_user_type when "all" nil when "locked" File.foreach($shadowfile) { |line| f = line.split(':') user_list.delete(f.first) unless f[1] =~ /^!/ } when "available" File.foreach($shadowfile) { |line| f = line.split(':') user_list.delete(f.first) if f[1] =~ /^!/ } end user_list.each_pair { |user_name, user_info| puts "#{sprintf("%-10s",user_name)}: uid(#{user_info[:id]}) group(#{user_info[:group]})" }