> 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