Munin::Node::OS − OS related utility methods for the munin node.
use Munin::Node::OS; my $uid = Munin::Node::OS−>get_uid('foo'); my $host = Munin::Node::OS−>get_fq_hostname();
get_uid
$uid = $class−>get_uid($user)
Returns the user ID . $user might either be a user name or a user ID . Returns undef if the user is nonexistent.
get_gid
$gid = $class−>get_gid($group)
Returns the group ID . $group might either be a group name or a group ID . Returns undef if the group is nonexistent.
get_fq_hostname
$host = $class−>get_fq_hostname()
Returns the fully qualified host name of the machine.
check_perms
$bool = $class−>check_perms($target);
If paranoia is enabled, returns false unless $target is owned by root, and has safe permissions. If $target is a file, also checks the directory it inhabits.
run_as_child
$result = run_as_child($timeout, $coderef, @arguments);
Creates a child process to run $code and waits for up to $timeout seconds for it to complete. Returns a hashref containg the following keys:
"stdout", "stderr"
Array references containing the output of these filehandles;
"retval"
The result of wait();
"timed_out"
True if the child had to be interrupted.
System errors will cause it to carp.
reap_child_group
$class−>reap_child_group($pid);
Sends SIGHUP and SIGKILL to the process group identified by $pid.
Sleeps for 2 seconds between SIGHUP and SIGKILL .
possible_to_signal_process
my $bool = $class−>possible_to_signal_process($pid)
Check whether itaXXs possible to send a signal to $pid (that means, to be brief, that the process is owned by the same user, or we are the super-user). This is a useful way to check that a child process is alive (even if only as a zombie) and hasnaXXt changed its UID .
set_effective_user_id
eval { $class−>set_effective_user_id($uid); }; if ($@) { # Failed to set EUID }
The name says it all ...
set_effective_group_id
See documentation for set_effective_user_id()
set_real_user_id
See documentation for set_effective_user_id()
set_real_group_id
See documentation for set_effective_user_id()