uawdijnntqw1x1x1
IP : 216.73.216.138
Hostname : www.vorobey-market.ru
Kernel : Linux www.vorobey-market.ru 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64
Disable Function : None :)
OS : Linux
PATH:
/
home
/
..
/
usr
/
src
/
..
/
libexec
/
..
/
src
/
..
/
src
/
..
/
src
/
..
/
src
/
..
/
src
/
..
/
share
/
munin
/
plugins
/
apt_all
/
/
#!/usr/bin/perl -w # -*- perl -*- =head1 NAME apt_all - Plugin to monitor packages that should be installed on systems using apt-get (mostly Debian, but also RedHat). =head1 NOTES The differences between this plugin and the apt plugins, is that this plugin separates each distro with its own plot, and actually draws graphs. =head1 CONFIGURATION You can add some extra options to the apt call, in order to override your /etc/apt.conf defaults. [apt_all] env.options -o Debug::pkgDepCache::AutoInstall=false -o APT::Get::Show-Versions=false Note that apt is called with no extra options by default, so it fully honors your /etc/apt.conf defaults. =head1 USAGE This plugin needs a cronjob that runs apt-get update every hour or so Example conjob /etc/cron.d/munin-plugin-apt 53 * * * * root apt-get update > /dev/null 2>&1 23 08 * * * root apt-get update > /dev/null Remember to randomize when these cronjobs are run on your servers This plugin can also be called with the argument "update", which will run apt-get update update <maxinterval> <probability> Updates the APT database randomly, guaranteeing there won't be more than <maxinterval> seconds between each update. Otherwise, there is a a 1 in <probability> chance that an update will occur. =head1 MAGIC MARKERS #%# family=manual #%# capabilities=autoconf =cut # Now for the real work... use strict; $ENV{'LANG'}="C"; $ENV{'LC_ALL'}="C"; my $statefile = ($ENV{MUNIN_PLUGSTATE} || '/var/lib/munin/plugin-state/nobody/') . "/plugin-apt.state"; my @releases = ("stable", "testing","unstable"); sub print_state() { if(-l $statefile) { die("$statefile is a symbolic link, refusing to read it."); } if (! -e "$statefile") { update_state (); } if (! -e "$statefile") { die ("$statefile does not exist. Something wicked happened."); } open(STATE, "$statefile") or die("Couldn't open state file $statefile for reading."); print while <STATE>; close STATE; } sub update_state() { if(-l $statefile) { die("$statefile is a symbolic link, refusing to touch it."); } open(STATE, ">$statefile") or die("Couldn't open state file $statefile for writing."); foreach my $release (@releases) { my $options = $ENV{options} || ""; my $apt="apt-get $options -u dist-upgrade --print-uris --yes -t $release |"; open (APT, "$apt") or exit 22; my @pending = (); my $hold = 0; my @remove = (); my @install = (); while (<APT>) { if (/^The following packages will be REMOVED:/) { my $where = 0; while (<APT>) { last if (/^\S/); foreach my $package (split /\s+/) { next unless ($package =~ /\S/); push (@remove, "-$package"); } } } if (/^The following NEW packages will be installed:/) { my $where = 0; while (<APT>) { last if (/^\S/); foreach my $package (split /\s+/) { next unless ($package =~ /\S/); push (@install, "+$package"); } } } if (/^The following packages will be upgraded/) { my $where = 0; while (<APT>) { last if (/^\S/); foreach my $package (split /\s+/) { next unless ($package =~ /\S/); push (@pending, $package); } } } if (/^\d+\supgraded,\s\d+\snewly installed, \d+ to remove and (\d+) not upgraded/) { $hold = $1; } } push (@pending, @install) if @install; push (@pending, @remove ) if @remove; close APT; print STATE "pending_$release.value ", scalar (@pending), "\n"; if (@pending) { print STATE "pending_$release.extinfo ", join (' ', @pending), "\n"; } print STATE "hold_$release.value $hold\n"; } close(STATE); } sub update_helpandexit() { print("apt update <maxinterval> <probability> -- update apt databases randomly\n\n", " maxinterval:\n", " Enforce the updating of the apt database if it has\n", " been more than (maxinterval many seconds since the last update.\n\n", " probability:\n", " There's a 1 in (probability) chance that the database\n", " will be updated.\n"); exit(1); } if ($ARGV[0] and $ARGV[0] eq "autoconf") { `apt-get -v >/dev/null 2>/dev/null`; if ($? eq "0") { print "yes\n"; exit 0; } else { print "no (apt-get not found)\n"; exit 0; } } if ($ARGV[0] and $ARGV[0] eq "config") { print "graph_title Pending packages\n"; print "graph_vlabel Total packages\n"; print "graph_category system\n"; foreach my $release (@releases) { print "pending_$release.label pending_$release\n"; print "pending_$release.warning 0:0\n"; print "hold_$release.label hold_$release\n"; } exit 0; } if ($ARGV[0] and $ARGV[0] eq "update") { my $maxinterval = $ARGV[1] ? $ARGV[1] : update_helpandexit; my $probability = $ARGV[2] ? $ARGV[2] : update_helpandexit; # if it's been $probability seconds since the last update, do # it now. if(-e $statefile && (stat($statefile))[10] + $maxinterval < time()) { update_state(); exec("/usr/bin/apt-get update") or die("Unable to exec() apt-get"); } # if the state-file doesn't exist, create it. if(!-e $statefile) { update_state(); } # update the database if the 1 in $probability check hits. if(!int(rand($probability))) { update_state(); exec("/usr/bin/apt-get update") or die("Unable to exec() apt-get"); } exit(0); } print_state (); exit 0; # vim:syntax=perl
/home/../usr/src/../libexec/../src/../src/../src/../src/../src/../share/munin/plugins/apt_all