Nimm statt awk lieber einfache bash-Tools:
[ $(pidof logsurfer | tr -d '0123456789' | wc -c) -eq 2 ]
Allerdings ist dein Skript nicht funktionsfähig, das hier sollte eher klappen:
Code:
for i in {1..20}
do
cat '[ "$(which logsurfer)" == "/usr/bin/logsurfer" ] || ( uname -n >&2 ; exit 1 )
[ $(pidof logsurfer | tr -d '0123456789' | wc -c) -eq 2 ] || exit 2
grep LOG1 /etc/init.d/logsurfer 2&> /dev/null || exit 3
grep 255.255.255.0 /etc/sysconfig/network/ifcfg-eth* 2&> /dev/null || exit 4' | ssh -l root ip.ip.ip.$i -p Passwort
done
2>> /dir/logsurfer/alert.conf
exitcode = $?
[ $exitcode -eq 0 ] && echo "Alle Checks OK bei ip.ip.ip.$i"
[ $exitcode -eq 1 ] && echo "which logsurfer ist nicht /usr/bin/logsurfer bei ip.ip.ip.$i"
[ $exitcode -eq 2 ] && echo "pidof logsurfer ergab nicht zwei Prozesse bei ip.ip.ip.$i"
[ $exitcode -eq 3 ] && echo "LOG1 nicht in /etc/init.d/logsurfer bei ip.ip.ip.$i"
[ $exitcode -eq 4 ] && echo "255.255.255.0 nicht in /etc/sysconfig/network/ifcfg-eth\* bei ip.ip.ip.$i"
Allerdings war deine Problemstellung an einiegen Stellen ziemlich schwammig, ich habe mich mehr an den Befehlen orientiert (die IP-Adressen unterscheidensich in Netzwerken meist in dem letzten Oktett, wenn tatsächlich das zweite Oktett gemeint sein sollte, abändern).
Du musst allerdings das Passwort als Parameter übergeben, oder im Skript selbst; du könntest das umgehen, indem du das Skript auf jedem Rechner abspeicherst und per "ssh -l root ip.ip.ip.$i <Pfad zum ausführbaren Skript>" aufrufst (dann wird das Passwort interaktiv abgefragt).
Das würde dann z.B. so aussehen:
/usr/local/bin/checklogsurfer.sh auf den 20 Rechnern:
Code:
#!/bin/bash
# "chmod +x" auf dieses Skript anwenden!
[ "$(which logsurfer)" == "/usr/bin/logsurfer" ] || ( uname -n >&2 ; exit 1 )
[ $(pidof logsurfer | tr -d '0123456789' | wc -c) -eq 2 ] || exit 2
grep LOG1 /etc/init.d/logsurfer 2&> /dev/null || exit 3
grep 255.255.255.0 /etc/sysconfig/network/ifcfg-eth* 2&> /dev/null || exit 4
Check-Skript auf deiner Kiste:
Code:
for i in {1..20}
do ssh -l root ip.ip.ip.$i 2>> /dir/logsurfer/alert.conf
exitcode = $?
[ $exitcode -eq 0 ] && echo "Alle Checks OK bei ip.ip.ip.$i"
[ $exitcode -eq 1 ] && echo "which logsurfer ist nicht /usr/bin/logsurfer bei ip.ip.ip.$i"
[ $exitcode -eq 2 ] && echo "pidof logsurfer ergab nicht zwei Prozesse bei ip.ip.ip.$i"
[ $exitcode -eq 3 ] && echo "LOG1 nicht in /etc/init.d/logsurfer bei ip.ip.ip.$i"
[ $exitcode -eq 4 ] && echo "255.255.255.0 nicht in /etc/sysconfig/network/ifcfg-eth\* bei ip.ip.ip.$i"
done
Lesezeichen