in reply to switching from <> to $ARGV
Fixed numerous bugs and issues:
#!/usr/bin/env perl use strict; use warnings; use IPC::System::Simple qw( systemx ); sub usage { print(STDERR "$_[0]\n") if @_; print(STDERR "usage: $0 user muser [ user muser [ ... ] ]\n"); exit(1); } sub get_user_home { return (getpwnam($_[0]))[7]; } usage("Wrong number of args\n") if @ARGV % 2 != 0; my $success = 1; while (@ARGV) { my $user = pop; my $muser = pop; my $home = get_user_home($user); if (!defined($home)) { warn("No such user \"$user\"\n"); $success = 0; next; } if (-d $home) { warn("User \"$user\" already has a home directory\n"); $success = 0; next; } my $mhome = get_user_home($muser); if (!defined($mhome)) { warn("No such user \"$muser\"\n"); $success = 0; next; } if (!eval { systemx(mkdir => ( $home )); systemx(chown => ( "$user:users", $home )); systemx(ln => ( '-s', "$mhome/.profile", "$home/.profile" )); 1 }) { warn($@); $success = 0; next; } } exit($success ? 0 : 1);
|
|---|