Solaris「クリーン」グループファイル(または任意のテキストファイル)

Solaris「クリーン」グループファイル(または任意のテキストファイル)

私は多数のサーバーで/etc/groupファイルのクリーンアップ操作をスクリプト化する方法を探しています。特定のグループのユーザーを複数回検索します。

つまり、 somegroup::100000:userA, userB, userC, foo, bar, snafu, userB, userB

明らかに小規模なグループの場合、これは簡単で手動で実行できますが、多数のグループとアイテムを含むいくつかのグループファイルがあります。

簡単なのでJavaで書こうと思いましたが、PerlやShellで探すのが好きです。

ありがとうございます!

ショーン

ベストアンサー1

これを行うPerlスクリプトは次のとおりです。

while (<>) {
    chomp;
    my ($name, $pass, $gid, $users) = split ':';
    my %userset;
    my @users = split ',', $users;
    # create a set (a hash with undef keys) by assigning to hash slice
    @userset{@users} = ();
    $users = join ',', sort(keys(%userset));
    print join(':', $name, $pass, $gid, $users). "\n";
}

次のように使用してください。

$ ./fixgroups <group >group.tmp
$ diff -u group group.tmp
-somegroup::100000:userA,userB,userC,foo,bar,snafu,userB,userB
+somegroup::100000:bar,foo,snafu,userA,userB,userC
$ mv group.tmp group

おすすめ記事