From 867371f736be3a5c62e600ac1bd50a57e5f9600f Mon Sep 17 00:00:00 2001 From: ReachableCEO Date: Thu, 12 Jun 2025 11:39:43 -0500 Subject: [PATCH] PFV Infra 2.0, here we go... --- aliases | 3 + librenms.tar.gz | Bin 0 -> 10012 bytes librenms/distro | 114 ++++++++ librenms/ntp-client.sh | 25 ++ librenms/ntp-server.sh | 89 +++++++ librenms/os-updates.sh | 73 ++++++ librenms/postfix-queues | 13 + librenms/postfixdetailed | 545 +++++++++++++++++++++++++++++++++++++++ librenms/smart | 363 ++++++++++++++++++++++++++ librenms/smart.config | 3 + librenms/snmpd.conf | 32 +++ netdata-stream.conf | 4 + nsswitch.conf | 22 ++ ntp.conf | 6 + profiled-tmux.sh | 4 + profiled-tsys-shell.sh | 3 + rsyslog.conf | 17 ++ snmpd.conf | 40 +++ up2date.sh | 16 ++ 19 files changed, 1372 insertions(+) create mode 100644 aliases create mode 100644 librenms.tar.gz create mode 100644 librenms/distro create mode 100644 librenms/ntp-client.sh create mode 100644 librenms/ntp-server.sh create mode 100644 librenms/os-updates.sh create mode 100644 librenms/postfix-queues create mode 100644 librenms/postfixdetailed create mode 100644 librenms/smart create mode 100644 librenms/smart.config create mode 100644 librenms/snmpd.conf create mode 100644 netdata-stream.conf create mode 100644 nsswitch.conf create mode 100644 ntp.conf create mode 100644 profiled-tmux.sh create mode 100644 profiled-tsys-shell.sh create mode 100644 rsyslog.conf create mode 100644 snmpd.conf create mode 100644 up2date.sh diff --git a/aliases b/aliases new file mode 100644 index 0000000..799fcb9 --- /dev/null +++ b/aliases @@ -0,0 +1,3 @@ +# See man 5 aliases for format +postmaster: root +root: coo@turnsys.com diff --git a/librenms.tar.gz b/librenms.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..b4f123c93b3c147e11e557de79b1c0f03766f3dd GIT binary patch literal 10012 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 literal 0 HcmV?d00001 diff --git a/librenms/distro b/librenms/distro new file mode 100644 index 0000000..61ad248 --- /dev/null +++ b/librenms/distro @@ -0,0 +1,114 @@ +#!/usr/bin/env bash +# Detects which OS and if it is Linux then it will detect which Linux Distribution. + +OS=`uname -s` +REV=`uname -r` +MACH=`uname -m` + +if [ "${OS}" = "SunOS" ] ; then + OS=Solaris + ARCH=`uname -p` + OSSTR="${OS} ${REV}(${ARCH} `uname -v`)" + +elif [ "${OS}" = "AIX" ] ; then + OSSTR="${OS} `oslevel` (`oslevel -r`)" + +elif [ "${OS}" = "Linux" ] ; then + KERNEL=`uname -r` + + if [ -f /etc/fedora-release ]; then + DIST=$(cat /etc/fedora-release | awk '{print $1}') + REV=`cat /etc/fedora-release | sed s/.*release\ // | sed s/\ .*//` + + elif [ -f /etc/redhat-release ] ; then + DIST=$(cat /etc/redhat-release | awk '{print $1}') + if [ "${DIST}" = "CentOS" ]; then + DIST="CentOS" + elif [ "${DIST}" = "Mandriva" ]; then + DIST="Mandriva" + PSEUDONAME=`cat /etc/mandriva-release | sed s/.*\(// | sed s/\)//` + REV=`cat /etc/mandriva-release | sed s/.*release\ // | sed s/\ .*//` + elif [ -f /etc/oracle-release ]; then + DIST="Oracle" + else + DIST="RedHat" + fi + + PSEUDONAME=`cat /etc/redhat-release | sed s/.*\(// | sed s/\)//` + REV=`cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//` + + elif [ -f /etc/mandrake-release ] ; then + DIST='Mandrake' + PSEUDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//` + REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//` + + elif [ -f /etc/devuan_version ] ; then + DIST="Devuan `cat /etc/devuan_version`" + REV="" + + elif [ -f /etc/debian_version ] ; then + DIST="Debian `cat /etc/debian_version`" + REV="" + ID=`lsb_release -i | awk -F ':' '{print $2}' | sed 's/ //g'` + if [ "${ID}" = "Raspbian" ] ; then + DIST="Raspbian `cat /etc/debian_version`" + fi + + elif [ -f /etc/gentoo-release ] ; then + DIST="Gentoo" + REV=$(tr -d '[[:alpha:]]' $new ){ + return $new; + }; + + return $new - $old; +} + + +my $output=`$pflogsumm /var/log/mail.log`; + +#holds client host rejected values till the end when it is compared to the old one +my $chrNew=0; + +#holds RBL values till the end when it is compared to the old one +my $buNew=0; + +# holds recipient address rejected values till the end when it is compared to the old one +my $raruuNew=0; + +#holds the current values for checking later +my $current=''; + +my @outputA=split( /\n/, $output ); +my $int=0; +while ( defined( $outputA[$int] ) ){ + my $line=$outputA[$int]; + + $line=~s/^ *//; + $line=~s/ +/ /g; + $line=~s/\)$//; + + my $handled=0; + + #received line + if ( ( $line =~ /[0123456789] received$/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $receivedC=$line; + $received=newValue( $received, $line ); + $handled=1; + } + + #delivered line + if ( ( $line =~ /[0123456789] delivered$/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $deliveredC=$line; + $delivered=newValue( $delivered, $line ); + $handled=1; + } + + #forward line + if ( ( $line =~ /[0123456789] forwarded$/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $forwardedC=$line; + $forwarded=newValue( $forwarded, $line ); + $handled=1; + } + + #defereed line + if ( ( $line =~ /[0123456789] deferred \(/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $deferredC=$line; + $deferred=newValue( $deferred, $line ); + $handled=1; + } + + #bounced line + if ( ( $line =~ /[0123456789] bounced$/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $bouncedC=$line; + $bounced=newValue( $bounced, $line ); + $handled=1; + } + + #rejected line + if ( ( $line =~ /[0123456789] rejected \(/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $rejectedC=$line; + $rejected=newValue( $rejected, $line ); + $handled=1; + } + + #reject warning line + if ( ( $line =~ /[0123456789] reject warnings/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $rejectwC=$line; + $rejectw=newValue( $rejectw, $line ); + $handled=1; + } + + #held line + if ( ( $line =~ /[0123456789] held$/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $heldC=$line; + $held=newValue( $held, $line ); + $handled=1; + } + + #discarded line + if ( ( $line =~ /[0123456789] discarded \(/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $discardedC=$line; + $discarded=newValue( $discarded, $line ); + $handled=1; + } + + #bytes received line + if ( ( $line =~ /[0123456789kM] bytes received$/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $line=~s/k/000/; + $line=~s/M/000000/; + $bytesrC=$line; + $bytesr=newValue( $bytesr, $line ); + $handled=1; + } + + #bytes delivered line + if ( ( $line =~ /[0123456789kM] bytes delivered$/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $line=~s/k/000/; + $line=~s/M/000000/; + $bytesdC=$line; + $bytesd=newValue( $bytesd, $line ); + $handled=1; + } + + #senders line + if ( ( $line =~ /[0123456789] senders$/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $sendersC=$line; + $senders=newValue( $senders, $line ); + $handled=1; + } + + #sendering hosts/domains line + if ( ( $line =~ /[0123456789] sending hosts\/domains$/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $sendinghdC=$line; + $sendinghd=newValue( $sendinghd, $line ); + $handled=1; + } + + #recipients line + if ( ( $line =~ /[0123456789] recipients$/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $recipientsC=$line; + $recipients=newValue( $recipients, $line ); + $handled=1; + } + + #recipients line + if ( ( $line =~ /[0123456789] recipient hosts\/domains$/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $recipienthdC=$line; + $recipienthd=newValue( $recipienthd, $line ); + $handled=1; + } + + # deferrals connectios refused + if ( ( $line =~ /[0123456789] 25\: Connection refused$/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $deferralcrC=$line; + $deferralcr=newValue( $deferralcr, $line ); + $handled=1; + } + + # deferrals Host is down + if ( ( $line =~ /Host is down$/ ) && ( ! $handled ) ){ + $line=~s/ .*//; + $deferralhidC=$line; + $deferralhid=newValue( $deferralhid, $line ); + $handled=1; + } + + # Client host rejected + if ( ( $line =~ /Client host rejected/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $chrNew=$chrNew + $line; + $handled=1; + } + + #Helo command rejected: need fully-qualified hostname + if ( ( $line =~ /Helo command rejected\: need fully\-qualified hostname/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $hcrnfqhC=$line; + $hcrnfqh=newValue( $hcrnfqh, $line ); + $handled=1; + } + + #Sender address rejected: Domain not found + if ( ( $line =~ /Sender address rejected\: Domain not found/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $sardnfC=$line; + $sardnf=newValue( $sardnf, $line ); + $handled=1; + } + + #Sender address rejected: not owned by user + if ( ( $line =~ /Sender address rejected\: not owned by user/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $sarnobuC=$line; + $sarnobu=newValue( $sarnobu, $line ); + $handled=1; + } + + #blocked using + # These lines are RBLs so there will be more than one. + # Use $buNew to add them all up. + if ( ( $line =~ /blocked using/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $buNew=$buNew + $line; + $handled=1; + } + + #Recipient address rejected: User unknown + if ( ( $line =~ /Recipient address rejected\: User unknown/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $raruuNew=$raruuNew + $line; + $handled=1; + } + + #Helo command rejected: Invalid name + if ( ( $line =~ /Helo command rejected\: Invalid name/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $hcrinC=$line; + $hcrin=newValue( $hcrin, $line ); + } + + #Sender address rejected: need fully-qualified address + if ( ( $line =~ /Sender address rejected\: need fully-qualified address/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $sarnfqaC=$line; + $sarnfqa=newValue( $sarnfqa, $line ); + } + + #Recipient address rejected: Domain not found + if ( ( $line =~ /Recipient address rejected\: Domain not found/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $rardnfC=$line; + $rardnf=newValue( $rardnf, $line ); + } + + #Improper use of SMTP command pipelining + if ( ( $line =~ /Improper use of SMTP command pipelining/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $iuoscpC=$line; + $iuoscp=newValue( $iuoscp, $line ); + } + + #Message size exceeds fixed limit + if ( ( $line =~ /Message size exceeds fixed limit/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $mseflC=$line; + $msefl=newValue( $msefl, $line ); + } + + #Server configuration error + if ( ( $line =~ /Server configuration error/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $sceC=$line; + $sce=newValue( $sce, $line ); + } + + #Server configuration problem + if ( ( $line =~ /Server configuration problem/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $scpC=$line; + $scp=newValue( $scp, $line ); + } + + #unknown reject reason + if ( ( $line =~ /unknown reject reason/ ) && ( ! $handled ) ){ + $line=~s/.*\: //g; + $urrC=$line; + $urr=newValue( $urr, $line ); + } + $int++; +} + +# final client host rejected total +$chr=newValue( $chr, $chrNew ); + +# final RBL total +$bu=newValue( $bu, $buNew ); + +# final recipient address rejected total +$raruu=newValue( $raruu, $raruuNew ); + +my $data=$received."\n". + $delivered."\n". + $forwarded."\n". + $deferred."\n". + $bounced."\n". + $rejected."\n". + $rejectw."\n". + $held."\n". + $discarded."\n". + $bytesr."\n". + $bytesd."\n". + $senders."\n". + $sendinghd."\n". + $recipients."\n". + $recipienthd."\n". + $deferralcr."\n". + $deferralhid."\n". + $chr."\n". + $hcrnfqh."\n". + $sardnf."\n". + $sarnobu."\n". + $bu."\n". + $raruu."\n". + $hcrin."\n". + $sarnfqa."\n". + $rardnf."\n". + $rarnfqa."\n". + $iuscp."\n". + $sce."\n". + $scp."\n". + $urr."\n"; + $msefl."\n". + +print $data; + +my $current=$receivedC."\n". + $deliveredC."\n". + $forwardedC."\n". + $deferredC."\n". + $bouncedC."\n". + $rejectedC."\n". + $rejectwC."\n". + $heldC."\n". + $discardedC."\n". + $bytesrC."\n". + $bytesdC."\n". + $sendersC."\n". + $sendinghdC."\n". + $recipientsC."\n". + $recipienthdC."\n". + $deferralcrC."\n". + $deferralhidC."\n". + $chrNew."\n". + $hcrnfqhC."\n". + $sardnfC."\n". + $sarnobuC."\n". + $buNew."\n". + $raruuNew."\n". + $hcrinC."\n". + $sarnfqaC."\n". + $rardnfC."\n". + $rarnfqaC."\n". + $iuscpC."\n". + $mseflC."\n". + $sceC."\n". + $scpC."\n". + $urrC."\n"; + +open(my $fh, ">", $cache) or die "Can't open '".$cache."'"; +print $fh $current; +close($fh); diff --git a/librenms/smart b/librenms/smart new file mode 100644 index 0000000..44b7a31 --- /dev/null +++ b/librenms/smart @@ -0,0 +1,363 @@ +#!/usr/bin/env perl +#Copyright (c) 2017, Zane C. Bowers-Hadley +#All rights reserved. +# +#Redistribution and use in source and binary forms, with or without modification, +#are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +#ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +#WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +#IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +#INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +#BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +#DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +#LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +#OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +#THE POSSIBILITY OF SUCH DAMAGE. + +=for comment + +Add this to snmpd.conf like below. + + extend smart /etc/snmp/smart + +Then add to root's cron tab, if you have more than a few disks. + + */3 * * * * /etc/snmp/smart -u + +You will also need to create the config file, which defaults to the same path as the script, +but with .config appended. So if the script is located at /etc/snmp/smart, the config file +will be /etc/snmp/smart.config. Alternatively you can also specific a config via -c. + +Anything starting with a # is comment. The format for variables is $variable=$value. Empty +lines are ignored. Spaces and tabes at either the start or end of a line are ignored. Any +line with out a = or # are treated as a disk. + + #This is a comment + cache=/var/cache/smart + smartctl=/usr/local/sbin/smartctl + useSN=0 + ada0 + ada1 + +The variables are as below. + + cache = The path to the cache file to use. Default: /var/cache/smart + smartctl = The path to use for smartctl. Default: /usr/bin/env smartctl + useSN = If set to 1, it will use the disks SN for reporting instead of the device name. + 1 is the default. 0 will use the device name. + +If you want to guess at the configuration, call it with -g and it will print out what it thinks +it should be. + +=cut + +## +## You should not need to touch anything below here. +## +use warnings; +use strict; +use Getopt::Std; + +my $cache='/var/cache/smart'; +my $smartctl='/usr/bin/env smartctl'; +my @disks; +my $useSN=1; + +$Getopt::Std::STANDARD_HELP_VERSION = 1; +sub main::VERSION_MESSAGE { + print "SMART SNMP extend 0.0.0\n"; +}; + + +sub main::HELP_MESSAGE { + print "\n". + "-u Update '".$cache."'\n". + "-g Guess at the config and print it to STDOUT.\n". + "-c The config file to use.\n"; +} + +#gets the options +my %opts=(); +getopts('ugc:', \%opts); + +# guess if asked +if ( defined( $opts{g} ) ){ + + #get what path to use for smartctl + $smartctl=`which smartctl`; + chomp($smartctl); + if ( $? != 0 ){ + warn("'which smartctl' failed with a exit code of $?"); + exit 1; + } + + #try to touch the default cache location and warn if it can't be done + system('touch '.$cache.'>/dev/null'); + if ( $? != 0 ){ + $cache='#Could not touch '.$cache. "You will need to manually set it\n". + "cache=?\n"; + }else{ + $cache='cache='.$cache."\n"; + } + + my %found_disks; + + #check for drives named /dev/sd* + my @matches=glob('/dev/sd*'); + @matches=grep(!/[0-9]/, @matches); + my $matches_int=0; + while ( defined( $matches[$matches_int] ) ){ + my $device=$matches[$matches_int]; + system( $smartctl.' -A '.$device.' > /dev/null' ); + if ( $? == 0 ){ + $device =~ s/\/dev\///; + $found_disks{$device}=1; + } + + $matches_int++; + } + + #check for drives named /dev/ada* + @matches=glob('/dev/ada*'); + @matches=grep(!/[ps]/, @matches); + $matches_int=0; + while ( defined( $matches[$matches_int] ) ){ + my $device=$matches[$matches_int]; + system( $smartctl.' -A '.$device.' > /dev/null' ); + if ( $? == 0 ){ + $device =~ s/\/dev\///; + $found_disks{$device}=1; + } + + $matches_int++; + } + + #check for drives named /dev/da* + @matches=glob('/dev/da*'); + @matches=grep(!/[ps]/, @matches); + $matches_int=0; + while ( defined( $matches[$matches_int] ) ){ + my $device=$matches[$matches_int]; + system( $smartctl.' -A '.$device.' > /dev/null' ); + if ( $? == 0 ){ + $device =~ s/\/dev\///; + $found_disks{$device}=1; + } + + $matches_int++; + } + + #have smartctl scan and see if it finds anythings not get found + my $scan_output=`$smartctl --scan-open`; + my @scan_outputA=split(/\n/, $scan_output); + @scan_outputA=grep(!/ses[0-9]/, @scan_outputA); # not a disk, but may or may not have SMART attributes + @scan_outputA=grep(!/pass[0-9]/, @scan_outputA); # very likely a duplicate and a disk under another name + $matches_int=0; + while ( defined( $scan_outputA[$matches_int] ) ){ + my $device=$scan_outputA[$matches_int]; + $device =~ s/ .*//; + system( $smartctl.' -A '.$device.' > /dev/null' ); + if ( $? == 0 ){ + $device =~ s/\/dev\///; + $found_disks{$device}=1; + } + + $matches_int++; + } + + print "useSN=0\n".'smartctl='.$smartctl."\n". + $cache. + join( "\n", keys(%found_disks) )."\n"; + + exit 0; +} + +#get which config file to use +my $config=$0.'.config'; +if ( defined( $opts{c} ) ){ + $config=$opts{c}; +} + +#reads the config file, optionally +my $config_file=''; +open(my $readfh, "<", $config) or die "Can't open '".$config."'"; +read($readfh , $config_file , 1000000); +close($readfh); + +#parse the config file and remove comments and empty lines +my @configA=split(/\n/, $config_file); +@configA=grep(!/^$/, @configA); +@configA=grep(!/^\#/, @configA); +@configA=grep(!/^[\s\t]*$/, @configA); +my $configA_int=0; +while ( defined( $configA[$configA_int] ) ){ + my $line=$configA[$configA_int]; + $line=~s/^[\t\s]+//; + $line=~s/[\t\s]+$//; + + my ( $var, $val )=split(/=/, $line, 2); + + if ( $var eq 'cache' ){ + $cache=$val; + } + + if ( $var eq 'smartctl' ){ + $smartctl=$val; + } + + if ( $var eq 'useSN' ){ + $useSN=$val; + } + + if ( !defined( $val ) ){ + push(@disks, $var); + } + + $configA_int++; +} + +#if set to 1, no cache will be written and it will be printed instead +my $noWrite=0; + +# if no -u, it means we are being called from snmped +if ( ! defined( $opts{u} ) ){ + # if the cache file exists, print it, otherwise assume one is not being used + if ( -f $cache ){ + my $old=''; + open(my $readfh, "<", $cache) or die "Can't open '".$cache."'"; + read($readfh , $old , 1000000); + close($readfh); + print $old; + exit 0; + }else{ + $opts{u}=1; + $noWrite=1; + } +} + +my $toReturn=''; +my $int=0; +while ( defined($disks[$int]) ) { + my $disk=$disks[$int]; + my $disk_sn=$disk; + my $output=`$smartctl -A /dev/$disk`; + + my %IDs=( '5'=>'null', + '10'=>'null', + '173'=>'null', + '177'=>'null', + '183'=>'null', + '184'=>'null', + '187'=>'null', + '188'=>'null', + '190'=>'null', + '194'=>'null', + '196'=>'null', + '197'=>'null', + '198'=>'null', + '199'=>'null', + '231'=>'null', + '233'=>'null', + ); + + my @outputA=split( /\n/, $output ); + my $outputAint=0; + while ( defined($outputA[$outputAint]) ) { + my $line=$outputA[$outputAint]; + $line=~s/^ +//; + $line=~s/ +/ /g; + + if ( $line =~ /^[0123456789]+ / ) { + my @lineA=split(/\ /, $line, 10); + my $raw=$lineA[9]; + my $id=$lineA[0]; + + # single int raw values + if ( + ( $id == 5 ) || + ( $id == 10 ) || + ( $id == 173 ) || + ( $id == 177 ) || + ( $id == 183 ) || + ( $id == 184 ) || + ( $id == 187 ) || + ( $id == 196 ) || + ( $id == 197 ) || + ( $id == 198 ) || + ( $id == 199 ) || + ( $id == 231 ) || + ( $id == 233 ) + ) { + $IDs{$id}=$raw; + } + + # 188, Command_Timeout + if ( $id == 188 ) { + my $total=0; + my @rawA=split( /\ /, $raw ); + my $rawAint=0; + while ( defined( $rawA[$rawAint] ) ) { + $total=$total+$rawA[$rawAint]; + $rawAint++; + } + $IDs{$id}=$total; + } + + # 190, airflow temp + # 194, temp + if ( + ( $id == 190 ) || + ( $id == 194 ) + ) { + my ( $temp )=split(/\ /, $raw); + $IDs{$id}=$temp; + } + + } + + $outputAint++; + } + + #get the selftest logs + $output=`$smartctl -l selftest /dev/$disk`; + @outputA=split( /\n/, $output ); + my $completed=scalar grep(/Completed without error/, @outputA); + my $interrupted=scalar grep(/Interrupted/, @outputA); + my $read_failure=scalar grep(/read failure/, @outputA); + my $unknown_failure=scalar grep(/unknown failure/, @outputA); + my $extended=scalar grep(/Extended/, @outputA); + my $short=scalar grep(/Short/, @outputA); + my $conveyance=scalar grep(/Conveyance/, @outputA); + my $selective=scalar grep(/Selective/, @outputA); + + # get the drive serial number, if needed + my $disk_id=$disk; + if ( $useSN ){ + while (`$smartctl -i /dev/$disk` =~ /Serial Number:(.*)/g) { + $disk_id = $1; + $disk_id =~ s/^\s+|\s+$//g; + } + } + + $toReturn=$toReturn.$disk_id.','.$IDs{'5'}.','.$IDs{'10'}.','.$IDs{'173'}.','.$IDs{'177'}.','.$IDs{'183'}.','.$IDs{'184'}.','.$IDs{'187'}.','.$IDs{'188'} + .','.$IDs{'190'} .','.$IDs{'194'}.','.$IDs{'196'}.','.$IDs{'197'}.','.$IDs{'198'}.','.$IDs{'199'}.','.$IDs{'231'}.','.$IDs{'233'}.','. + $completed.','.$interrupted.','.$read_failure.','.$unknown_failure.','.$extended.','.$short.','.$conveyance.','.$selective."\n"; + + $int++; +} + +if ( ! $noWrite ){ + open(my $writefh, ">", $cache) or die "Can't open '".$cache."'"; + print $writefh $toReturn; + close($writefh); +}else{ + print $toReturn; +} diff --git a/librenms/smart.config b/librenms/smart.config new file mode 100644 index 0000000..2b12988 --- /dev/null +++ b/librenms/smart.config @@ -0,0 +1,3 @@ +smartctl=/usr/sbin/smartctl +cache=/var/cache/smart +sda diff --git a/librenms/snmpd.conf b/librenms/snmpd.conf new file mode 100644 index 0000000..ee89764 --- /dev/null +++ b/librenms/snmpd.conf @@ -0,0 +1,32 @@ +########################################################################## +# snmpd.conf +# Created by CNW on 11/3/2018 via snmpconf wizard and manual post tweaks +########################################################################### +# SECTION: Monitor Various Aspects of the Running Host +# +# The following check up on various aspects of a host. + +# disk: Check for disk space usage of a partition. +# The agent can check the amount of available disk space, and make +# sure it is above a set limit. +# +load 3 3 3 +rocommunity kn3lmgmt 10.253.3.99 +syslocation PFV +syscontact prodtechopsalerts@turnsys.com +sysservices 76 + + +#TSYS tweaks +#Temperature +#pass_persist .1.3.6.1.4.1.9.9.13.1.3 /usr/local/bin/temper-snmp +#Smart +extend smart /usr/local/librenms/smart +#NTP +extend ntp-client /usr/local/librenms/ntp-client.sh +#SMTP +extend mailq /usr/local/librenms/postfix-queues +#Distro Detection +extend .1.3.6.1.4.1.2021.7890.1 distro /usr/local/librenms/distro +#extend zfs /usr/local/bin/zfs +extend osupdate /usr/local/librenms/os-updates.sh diff --git a/netdata-stream.conf b/netdata-stream.conf new file mode 100644 index 0000000..9f7a81b --- /dev/null +++ b/netdata-stream.conf @@ -0,0 +1,4 @@ +[stream] + enabled = yes + destination = tsys-librenms:19999 + api key = 6ed9e20a-c819-4ebc-b894-322eb0710d03 diff --git a/nsswitch.conf b/nsswitch.conf new file mode 100644 index 0000000..b45fabc --- /dev/null +++ b/nsswitch.conf @@ -0,0 +1,22 @@ +# +# Example configuration of GNU Name Service Switch functionality. +# If you have the `glibc-doc-reference' and `info' packages installed, try: +# `info libc "Name Service Switch"' for information about this file. + +passwd: compat sss +group: compat sss +shadow: compat sss +gshadow: files + +hosts: files dns +networks: files + +protocols: db files +services: db files sss +ethers: db files +rpc: db files + +netgroup: nis sss +sudoers: files + + diff --git a/ntp.conf b/ntp.conf new file mode 100644 index 0000000..47d7a12 --- /dev/null +++ b/ntp.conf @@ -0,0 +1,6 @@ +driftfile /var/lib/ntp/ntp.drift +leapfile /usr/share/zoneinfo/leap-seconds.list +server 10.251.33.6 +server 10.251.33.7 +restrict 127.0.0.1 +restrict ::1 diff --git a/profiled-tmux.sh b/profiled-tmux.sh new file mode 100644 index 0000000..8bd0650 --- /dev/null +++ b/profiled-tmux.sh @@ -0,0 +1,4 @@ +if command -v tmux &> /dev/null && [ -n "$PS1" ] && [[ ! "$TERM" =~ screen ]] && [[ ! "$TERM" =~ tmux ]] && [ -z "$TMUX" ]; then + tmux a -t default || exec tmux new -s default && exit; +fi + diff --git a/profiled-tsys-shell.sh b/profiled-tsys-shell.sh new file mode 100644 index 0000000..d61f6ad --- /dev/null +++ b/profiled-tsys-shell.sh @@ -0,0 +1,3 @@ +set -o vi +export HISTTIMEFORMAT="%m/%d/%Y %T " + diff --git a/rsyslog.conf b/rsyslog.conf new file mode 100644 index 0000000..f2da9f0 --- /dev/null +++ b/rsyslog.conf @@ -0,0 +1,17 @@ +# /etc/rsyslog.conf configuration file for rsyslog +# +# For more information install rsyslog-doc and see +# /usr/share/doc/rsyslog-doc/html/configuration/index.html + + +################# +#### MODULES #### +################# + +module(load="imuxsock") # provides support for local system logging +module(load="imklog") # provides kernel logging support +#module(load="immark") # provides --MARK-- message capability + +*.* @pfv-toolbox.turnsys.net:514 +EOF + diff --git a/snmpd.conf b/snmpd.conf new file mode 100644 index 0000000..e0b14a2 --- /dev/null +++ b/snmpd.conf @@ -0,0 +1,40 @@ +########################################################################## +# snmpd.conf +# Created by CNW on 11/3/2018 via snmpconf wizard and manual post tweaks +########################################################################### +# SECTION: Monitor Various Aspects of the Running Host +# + +# disk: Check for disk space usage of a partition. +# The agent can check the amount of available disk space, and make +# sure it is above a set limit. +# +load 3 3 3 +rocommunity kn3lmgmt 10.251.37.1 +sysservices 76 + +#syslocation Rack, Room, Building, City, Country [Lat, Lon] +syslocation R5, Prod Center, HQ, Pflugervile, Unite States +syscontact prodtechopsalerts@turnsys.com + +#NTP +extend ntp-client /usr/local/librenms/ntp-client.sh + +#SMTP +extend mailq /usr/local/librenms/postfix-queues +extend postfixdetailed /usr/local/librenms/postfixdetailed + +#OS Distribution Detection +extend distro /usr/local/librenms/distro +extend osupdate /usr/local/librenms/os-updates.sh + + +#Hardware Detection +# (uncomment for x86 platforms) +extend manufacturer '/bin/cat /sys/devices/virtual/dmi/id/sys_vendor' +extend hardware '/bin/cat /sys/devices/virtual/dmi/id/product_name' +extend serial '/bin/cat /sys/devices/virtual/dmi/id/product_serial' + + +# Allow Systems Management Data Engine SNMP to connect to snmpd using SMUX +# smuxpeer .1.3.6.1.4.1.674.10892.1 diff --git a/up2date.sh b/up2date.sh new file mode 100644 index 0000000..5370536 --- /dev/null +++ b/up2date.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +echo "Running apt-get update" +export DEBIAN_FRONTEND="noninteractive" && apt-get -qq --yes update + +echo "Running apt-get dist-upgrade" +export DEBIAN_FRONTEND="noninteractive" && apt-get -qq --yes dist-upgrade + +echo "Running apt-get upgrade" +export DEBIAN_FRONTEND="noninteractive" && apt-get -qq --yes upgrade + + +echo "Running apt-get purge" +export DEBIAN_FRONTEND="noninteractive" && apt-get -qq --purge autoremove --yes +export DEBIAN_FRONTEND="noninteractive" && apt-get -qq autoclean --yes +