Shell Script Dateivergleich Erweiterung

Mai 28, 2024 - Lesezeit: 5 Minuten

Das Script ist erweitert worden, es ist für mich eine Dokumentation.

#!/usr/bin/bash

# Deklaration Variablen

aix=/home/svc.aix_ansible/twe/lparcheck_schalter/aix.out

vio=/home/svc.aix_ansible/twe/lparcheck_schalter/vio.out

ansible=/home/svc.aix_ansible/twe/lparcheck_schalter/ansible.out

check=/home/svc.aix_ansible/twe/lparcheck_schalter/check.out

result=/home/svc.aix_ansible/twe/lparcheck_schalter/result.out

unknown=/home/svc.aix_ansible/twe/lparcheck_schalter/unknown.out

clear

#rm $aix $vio $ansible $check

if [ $# -eq 0 ]

then

        echo "Aufruf: $0 [-a] [-na] [-lv] [-v]"

        echo ""

        echo "-a erzeugt Datei result.out"

        echo "-na zeigt Alle Systeme, die nicht in Ansible vorhanden sind (ap-geh,debie,ista und rk Systeme werden ausgeblendet"

        echo "-lv zeigt Alle Systeme, die nicht mehr als LPAR / VIO vorhanden sind"

        echo "-v zeigt Alle Systeme, die nicht in Ansible vorhanden sind. Verbose Mode"

        echo""

        echo""

        exit

fi

rm $aix $vio $ansible $check

# Abfrage

if [ $1 = -v ]

then

echo "Starte die Abfrage . . ."

fi

/srv/lpar2rrd/pwrdata/search_lpar.py | grep -i AIX | sort | awk '{print $1}' | tr '[:upper:]' '[:lower:]' > $aix

/srv/lpar2rrd/pwrdata/search_lpar.py | grep -i VIOS | sort | awk '{print $1}'| tr '[:upper:]' '[:lower:]' > $vio

/srv/lpar2rrd/pwrdata/search_lpar.py | grep -i unknown > $unknown

cat /etc/ansible/hosts | grep "ansible_host" | sort | uniq | awk '{print $1}'| tr '[:upper:]' '[:lower:]' > $ansible

# Zusammenfuehren der Dateien aix und vio

cat $aix $vio | sort > $check

# Unterschiede pruefen und Ausgabe in Datei schreiben

rm $result

touch $result

echo "+-----------------------------------------------------------------------+" >> $result

printf "|%17s | %40s | %1s |\n" AIX_LPAR_VIO "" "Ansible" >> $result

echo "+-----------------------------------------------------------------------+" >> $result

for arg

do

        case $1 in

                "-a") sdiff $check $ansible | uniq >> $result

                echo "Das Ergebnis wir in der Datei result.out festgehalten. Die linke Spalte enthaelt AIX LPAR und VIO"

                echo "Die rechte Spalte enthaelt die Ansible Systeme."

                ;;

                "-na") sdiff $check $ansible | uniq | grep "<" | egrep -v "ap-geh*|debie*|rk0*|ist*" > $result

                        if [ -s $result ]

                then exit 1

                else exit 0

                        fi

                ;;

                "-lv") sdiff $check $ansible | uniq | grep ">" > $result

                        if [ -s $result ]

                then exit 1

                else exit 0

                        fi

                ;;

                "-v") sdiff $check $ansible | uniq > $result && grep "<" $result

                        if [ -s $unknown ]

                then echo ""

                        echo ""

                        echo "Systeme im Status unknown"

                        echo ""

                        cat $unknown

                        fi

                ;;

                *) echo "$0 hat keinen Schalter $1"

                echo ""

                echo ""

                echo "Anzeige der Schalter $0 und Return"

                echo ""

                ;;

                esac

shift

done


Shell Script Datei-Vergleich

Mai 6, 2024 - Lesezeit: 2 Minuten

Kleines Script um 2 Dateien zu Vergleichen und die Ausgabe in eine weitere Datei zu schreiben.

#!/usr/bin/bash

# Deklaration Variablen

aix=/home/svc.aix_ansible/twe/aix.out

vio=/home/svc.aix_ansible/twe/vio.out

ansible=/home/svc.aix_ansible/twe/ansible.out

check=/home/svc.aix_ansible/twe/check.out

result=/home/svc.aix_ansible/twe/result.out

clear

# Abfrage

echo "Starte die Abfrage . . ."

/srv/lpar2rrd/pwrdata/search_lpar.py | grep -i AIX | sort | awk '{print $1}'  > $aix

/srv/lpar2rrd/pwrdata/search_lpar.py | grep -i VIOS | sort | awk '{print $1}' > $vio

cat /etc/ansible/hosts | grep "ansible_host" | sort | awk '{print $1}' > $ansible

# Zusammenfuehren der Dateien aix und vio

cat $aix $vio | sort > $check

# Unterschiede pruefen und Ausgabe in Datei schreiben

rm $result

touch $result

echo "+-----------------------------------------------------------------------+" >> $result

printf "|%9s | %52s | %1s |\n" AIX_LPAR "" "VIO" >> $result

echo "+-----------------------------------------------------------------------+" >> $result

sdiff $check $ansible >> $result

# Dateien, bis auf result.out loeschen

rm $aix $vio $ansible $check

echo "Das Ergebnis wir in der Datei result.out festgehalten. Die linke Spalte enthaelt AIX LPAR und VIO"

echo "Die rechte Spalte enthaelt die Ansible Systeme."


Script für PRTG mySQL und Replizierung

März 1, 2022 - Lesezeit: ~1 Minute

Für die Überwachung der Datenbankreplizierung (Master/Master/Slave) auf Linux Systemen, habe ich ein Shell Script erstellt.

Das Script prüft, ob der mySQL Prozess läuft und ob die Replizierung ebenfalls aktiv ist.

Das Script sollte auf den DB Systemen unter /var/prtg/scripts abgelegt werden.

cat mysql-status.sh
#Mysql Check danach Slave IO & Slave SQL Check
#!/bin/bash

SQLout=`mysql -u root --password=xxx mysql -e "show slave status \G" | grep -i "Slave_SQL_Running"|awk '{print $2}'`
IOout=`mysql -u root --password=xxx mysql -e "show slave status \G" | grep -i "Slave_IO_Running"|awk '{print $2}'`
SQLcheck=`mysql -u root --password=xxx mysql -e "quit"`

if [ "$?" = "1" ]; then
#if [ "$SQLcheck" = "false" ]; then
echo "4:1:Database down"
exit 1

elif [ "$SQLout" = "No" ] || [ "$IOout" = "No" ]; then
echo "4:1:Replikationsfehler"
exit 1
fi

echo "0:0:OK"
exit 0


ZFS Check Pools Script

Juli 1, 2021 - Lesezeit: 3 Minuten

Um zfs Pools automatisch zu prüfen, habe ich vor ein paar Jahren einmal ein Shell Script erstellt, welches via cronjob in regelmässigen Abständen aufgerufen wird. Das Ergebnis wird via e-mail zugestellt.

Einfach die Variablen der eigenen Umgebung anpassen.

  #!/bin/bash
  # zpoolcheck Script Ver. 1.0
  # Date: 03.08.2012
  # by: Thomas Weidner
  # The script starts a scrub on each ZFS pool (only one at time)
  # and will send an e-mail with the result after the scrub is complete.


  # e-mail variables
 TO=tom@dvs8818.de
 LOG=/var/log/zpoolresult
 SUBJECTOK="Zpool status from nexenta-01"
 SUBJECTERROR="WARNING zpool error from nexenta-01"

 # work variables
 ERROR=0
 SEP=" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "
 RUNNING=1

 # commands & configuration
 ZPOOL=/sbin/zpool

 DATE="`date +"%Y-%m-%d %H:%M:%S"`"

 echo $DATE > $LOG


 # find all pools
 pools=$($ZPOOL list -H -o name)


 # for each pool
for pool in $pools; do
    # start scrub for $pool
    echo "starting scrub on $pool" >> $LOG
    zpool scrub $pool
    RUNNING=1
    # wait until scrub for $pool has finished running
    while [ $RUNNING = 1 ];     do
        # still running?
        if $ZPOOL status -v $pool | grep -q "scrub in progress"; then
            sleep 60
        # not running
        else
            # finished with this pool, exit
            echo "scrub ended on $pool" >> $LOG
            echo "`$ZPOOL status -v $pool`" >> $LOG
            echo $SEP >> $LOG
            RUNNING=0
            # check for errors
            if ! $ZPOOL status -v $pool | grep -q "No known data errors"; then
                echo "data errors detected on $pool" >> $LOG
                ERROR=1
            fi
        fi
    done
done

 # send result via e-mail

if [ $ERROR = 1 ]; then

                        mailx -s "$SUBJECTERROR" $TO < $LOG
                else
                        mailx -s "$SUBJECTOK" $TO < $LOG

fi


Network Range via Shell Script pingen

Mai 20, 2021 - Lesezeit: ~1 Minute

Wer mal fix eine IP Range via Shell Script pingen möchte. Es werden nur die IPs ausgegeben, die den Ping beantworten. Ein kleines aber sehr schnelles Script.

root@bacula-dev:/# for i in {1..254} ;do (ping 10.1.92.$i -c 1 -w 5  >/dev/null && echo "10.1.92.$i" &) ;done


10.1.92.1
10.1.92.2
10.1.92.4
10.1.92.75
10.1.92.99
10.1.92.105
10.1.92.104
10.1.92.106
10.1.92.113
10.1.92.151
10.1.92.152
10.1.92.155
10.1.92.154
10.1.92.153
10.1.92.156
10.1.92.157
10.1.92.159
10.1.92.207
10.1.92.208
10.1.92.209
10.1.92.211
10.1.92.210