Munin::Node::OS(3)

NAME
Munin::Node::OS - OS related utility methods for the Munin node.

SYNOPSIS
 use Munin::Node::OS;
 my $uid  = Munin::Node::OS->get_uid('foo');
 my $host = Munin::Node::OS->get_fq_hostname();

METHODS

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 doesn't exist.

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 doesn't exist.

get_fq_hostname
     $host = $class->get_fq_hostname()

    Returns the fully qualified host name of the machine.

check_perms_if_paranoid
     $bool = $class->check_perms_if_paranoid($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 containing 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 it's 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 hasn't 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()

set_umask
    Set umask so that files created by plugins are group writable Only call right before exec-ing a plugin.