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);
In reply to Re: switching from <> to $ARGV
by ikegami
in thread switching from <> to $ARGV
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |