Add merge-group.pl
This commit is contained in:
42
merge-group.pl
Normal file
42
merge-group.pl
Normal file
@@ -0,0 +1,42 @@
|
||||
#! /usr/bin/perl
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
if (scalar @ARGV < 1) {
|
||||
die "Usage: $0 <lowest_gid>";
|
||||
}
|
||||
|
||||
my $LOWEST_PVV_GID = int($ARGV[0]);
|
||||
|
||||
my @lines = ();
|
||||
|
||||
# Read old group file
|
||||
open(IN, "/etc/group") || die "Unable to open /etc/group: $!";
|
||||
while(<IN>) {
|
||||
my @parts = split(":");
|
||||
if ($parts[2] < $LOWEST_PVV_GID || $parts[0] eq "nogroup") {
|
||||
push @lines, $_;
|
||||
}
|
||||
}
|
||||
close IN || die "Unable to close /etc/group: $!";
|
||||
|
||||
# Read pvv group file
|
||||
my $groupcount = 0;
|
||||
open(PVV, "/etc/group.pvv") || die "Unable to open /etc/group.pvv: $!";
|
||||
while(<PVV>) {
|
||||
++$groupcount;
|
||||
push @lines, $_;
|
||||
}
|
||||
close PVV || die "Unable to close /etc/group.pvv: $!";
|
||||
|
||||
if ($groupcount < 200) {
|
||||
die "/etc/group.pvv has less than 200 groups, something went wrong";
|
||||
}
|
||||
|
||||
open(OUT, ">/etc/group.tmp") || die "Unable to open /etc/group.tmp for writing: $!";
|
||||
foreach (@lines) {
|
||||
print OUT $_ || die "Can't write to /etc/group.tmp: $!";
|
||||
}
|
||||
close OUT || die "Unable to close /etc/group.tmp: $!";
|
||||
|
||||
rename "/etc/group.tmp", "/etc/group" || die "Unable to move /etc/group.tmp to /etc/group: $!";
|
Reference in New Issue
Block a user