This little script will use Perl and find duplicate rpms on the system and dump them out to a duplicates file.
rpm --last -qa | perl -n -e '/^(\S+)-\S+-\S+/; print "$&\n" if $SEEN{$1}; $SEEN{$1} ||= $_;' | uniq > duplicates.txt
rpm --last -qa | perl -n -e '/^(\S+)-\S+-\S+/; print "$&\n" if $SEEN{$1}; $SEEN{$1} ||= $_;' | uniq > duplicates.txt
Parallel Virtual Machine (PVM) is a software tool for parallel networking of computers. It is designed to allow a network of heterogeneous Unix and/or Windows machines to be used as a single distributed parallel processor. Thus large computational problems can be solved more cost effectively by using the aggregate power and memory of many computers. The software is very portable; the source code, available free through netlib, has been compiled on everything from laptops to Crays.
The following Perl script will enumerate through the pvmhostfile and restart the pvm on each host.
#!/usr/bin/perl ### This script restarts PVM's that have failed ### use Parallel::Pvm; use Net::Ping; ### Set PVM Hostfile location ### $user="schmaus"; $pvmhostfile="/home/$user/.pvmhostfile"; ### Nothing to change below this line ### open (PVMHOST, $pvmhostfile); while ($hostname = ) { chomp($hostname); $status = Parallel::Pvm::mstat("$hostname"); chomp($status); if ($status ne "0") { $alive="1"; $p = Net::Ping->new(); $alive="0" if $p->ping($hostname); $p->close(); if ($alive ne "0") { print "$hostname: Offline-Down\n"; } else { Parallel::Pvm::addhosts("$hostname"); print "$hostname: Offline-Restarted\n"; } } else { print "$hostname: Online\n"; } } close(PVMHOST); exit;
#!/usr/bin/perl
use Authen::Radius;
my $numberargs = $#ARGV + 1;
if ($numberargs ne 5) {
print "Usage: check_radius \n";
exit(0);
}
my $hostname = $ARGV[0];
my $port = $ARGV[1];
my $radiussecret = $ARGV[2];
my $username = $ARGV[3];
my $password = $ARGV[4];
my $radius = new Authen::Radius(Host => "$hostname:$port", Secret => $radiussecret);
if (!defined $radius) {
print "No Response from Host\n";
exit(2);
} else {
my $r = $radius->check_pwd($username, $password);
if($r) {
print "Service OK\n";
exit(0);
} else {
print "Service Critical\n";
exit(2);
}
}
exit(2);
#!/usr/local/bin/zsh ################################################################# # This script checks 3510 status # ################################################################# EMAILADDR="sysadmin@software.umn.edu" FAILSTAT="0" FAILSTAT1="0" for DISKS in `/usr/local/sccli/sbin/sccli -l|/usr/local/bin/cut -d" " -f1 -` do SCCLI=`/usr/local/sccli/sbin/sccli $DISKS show logical-drives 2>&1 > /tmp/lds.out` LDS=`/usr/local/bin/cat /tmp/lds.out 2>&1|grep ld|grep -v Good` if [ $? = 1 ]; then FAILSTAT="0" else FAILSTAT1="1" fi SCCLI=`/usr/local/sccli/sbin/sccli $DISKS show enclosure-status 2>&1 > /tmp/sccli.out` for TESTS in Topology Fan PS Temp Voltage DiskSlot do CHECK=`/usr/local/bin/cat /tmp/sccli.out 2>&1|grep $TESTS|grep -v OK` if [ $? = 1 ]; then FAILSTAT="0" else FAILSTAT1="1" fi done if [ $FAILSTAT1 = 1 ]; then MERGE=`/usr/local/bin/cat /tmp/sccli.out>/tmp/report.out` MERGE=`echo>>/tmp/report.out` MERGE=`/usr/local/bin/cat /tmp/lds.out>>/tmp/report.out` SYSTEM=`hostname` SUBJECTLINE="StoreEdge Error -- HOST: $SYSTEM DISK: $DISKS" /bin/mailx -s $SUBJECTLINE $EMAILADDR < /tmp/report.out fi done exit
#!/bin/ksh
#########################################################################
# check_disks - check metadevices for errors and alert the user. #
# USAGE: check_disks [ -m (address) ] #
#########################################################################
TZ=CST5CDT
SUBJECT="MetaDisk Errors on `uname -n`"
GREP_CMD="/bin/egrep"
GREP_ARG="-s"
METASTAT_CMD=/usr/opt/SUNWmd/sbin/metastat
METADB_CMD=/usr/opt/SUNWmd/sbin/metadb
DISKSUITE_PRESENT=1
MAIL_OUTPUT=''
MAIL_RECIP=''
DEFAULT_MAIL_RECIP=''
OUTPUT_MSG=""
RESULT=''
OUTPUT_CODE=0
#########################################################################
# FUNCTION DEFINITIONS #
#########################################################################
function error_out {
RETURN_CODE=$2
ERROR_MSG=$1
print - $ERROR_MSG
exit $RETURN_CODE
}
#########################################################################
# MAIN PROGRAM #
#########################################################################
while getopts :m: c
do
case $c in
m ) MAIL_OUTPUT="YES" # any non-null string will do
MAIL_RECIP=$OPTARG
if [[ -z $MAIL_RECIP ]]
then
MAIL_RECIP=$DEFAULT_MAIL_RECIP
fi
;;
?) error_out "Usage: check_disks [ -m mail_addr ]" 1
;;
esac
done
if [ ! -x $GREP_CMD ]
then
GREP_CMD="/usr/xpg4/bin/egrep"
fi
if [ ! -x $GREP_CMD ]
then
print "ERROR: egrep not executable or not found"
exit 1
fi
PATH=$PATH:/usr/sbin
METASTAT_BIN=$(/bin/which metastat)
if [ ! -x $METASTAT_CMD ]
then
if [ -x $METASTAT_BIN ]
then
METASTAT_CMD=$METASTAT_BIN
DISKSUITE_PRESENT=1
else
DISKSUITE_PRESENT=0
fi
fi
METADB_BIN=$(/bin/which metadb)
if [ ! -x $METADB_CMD ]
then
if [ -x $METADB_BIN ]
then
METADB_CMD=$METADB_BIN
DISKSUITE_PRESENT=1
else
DISKSUITE_PRESENT=0
fi
fi
if [[ $DISKSUITE_PRESENT -eq 0 ]]
then
error_out "DiskSuite has been found." 3
fi
#################################################################
# DISKSUITE SECTION #
#################################################################
if [ $DISKSUITE_PRESENT -ne 0 ]
then
$METASTAT_CMD | $GREP_CMD $GREP_ARG aint
if [ $? -eq 0 ]
then
OUTPUT_MSG="${OUTPUT_MSG}Disk requires maintenance on `uname -n`\n"
fi
$METASTAT_CMD | $GREP_CMD $GREP_ARG "In use"
if [ $? -eq 0 ]
then
OUTPUT_MSG="${OUTPUT_MSG}Disk hot spared on `uname -n`"
fi
$METADB_CMD | $GREP_CMD $GREP_ARG "[A-Z]"
if [ $? -eq 0 ]
then
OUTPUT_MSG="${OUTPUT_MSG}Metadb problems on `uname -n`\n"
fi
fi
#################################################################
# OUTPUT SECTION #
#################################################################
if [[ ! -z $MAIL_OUTPUT ]]
then
if [[ ! -z "$OUTPUT_MSG" && ! -z $MAIL_RECIP ]]
then
print $OUTPUT_MSG | mailx -s "$SUBJECT" $MAIL_RECIP
OUTPUT_CODE=-1
fi
else
if [[ ! -z "$OUTPUT_MSG" ]] # or else just print on stdout
then
print $OUTPUT_MSG
OUTPUT_CODE=-1
fi
fi
return $OUTPUT_CODE