in reply to Check if home dir is mounted?

> How can I perform a simple check to make sure a user's home directory is mounted to a specific system?

sub has_mounted_home { my $uid = shift || die 'Wrong Parameters!\n'; my @userinfo = getpwnam("$uid"); # $uid not found: return if @userinfo == 0; my $local_homedir = $userinfo[7]; # perhaps use Linux::Mounts instead of: my $mount_result = `/bin/mount | /bin/grep $local_homedir`; # needs improvement because /homes/user1 will match e.g. /homes/us +er12 ... return $mount_result ne ""; } foreach my $uid ('uid1', 'uid2', 'uid3') { print "$uid has a mounted home\n" if has_mounted_home($uid); }

That should do if you don't have an automounter but static mounted homes. If you have an automounter, try f00li5h or shmems solutions since you'll have to access the directories before they are mounted automatically what you'll have to check then.

I prefere looking into the 'mounts' instead of just checking if e.g. '/homes/user1' exists. It may exist but without a mounted home directory to it!

k

Replies are listed 'Best First'.
Re^2: Check if home dir is mounted?
by f00li5h (Chaplain) on Apr 12, 2007 at 05:50 UTC

    /bin/mount will print out that /home is mounted but trying to match "/home/f00li5h" against "/dev/wd0k on /home type ext2fs (local)" will not match, unless every single user's homedir is a it's own mount point... has_mounted_home() won't work for user's who's homedirs are below mount points...

    it all depends on which solution is more sensible for your unique set of mountpoints

    @_=qw; ask f00li5h to appear and remain for a moment of pretend better than a lifetime;;s;;@_[map hex,split'',B204316D8C2A4516DE];;y/05/os/&print;