Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:bash_script_snippets

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:bash_script_snippets [2019/02/21 15:21] – [Beispiel für das Löschen aller audit Dump Files im adump Dir einer Datenbank] gpipperrlinux:bash_script_snippets [2022/07/29 13:31] (aktuell) – [Wann wurde die VM in Betrieb genommen] gpipperr
Zeile 49: Zeile 49:
 # auf die „:“ Syntax für Parameter mit und ohne weiteren Wert achten! # auf die „:“ Syntax für Parameter mit und ohne weiteren Wert achten!
  
-typeset COMMAND_PARAM=":a:h"+usage() { echo "Usage: `basename $0` options -i <inventory nr> / use -h for help" 1>&2 ; exit 1; } 
 + 
 +typeset COMMAND_PARAM=":i:h"
  
 # falls nicht übergeben wurden mit exit beenden # falls nicht übergeben wurden mit exit beenden
 +
 if ( ! getopts "${COMMAND_PARAM}" opt); then if ( ! getopts "${COMMAND_PARAM}" opt); then
-    echo "Usage: `basename $0` options -a <filename> / use -h for help"; + usage
-    exit 1;+
 fi fi
- +
 # Parameter auswerten # Parameter auswerten
  
 while getopts "${COMMAND_PARAM}"  opt; do while getopts "${COMMAND_PARAM}"  opt; do
   case $opt in   case $opt in
-    a+    i
-      echo "-was triggered, Parameter: $OPTARG " >&2+      echo "-was triggered, Parameter: $OPTARG " >&2 
 +      inventory=${OPTARG}
       ;;       ;;
     h)     h)
       echo "-h was triggered, call help" >&2       echo "-h was triggered, call help" >&2
-      ;;  +      usage 
 +      exit 1 
 +      ;;
     \?)     \?)
       echo "Invalid option: -$OPTARG" >&2       echo "Invalid option: -$OPTARG" >&2
Zeile 77: Zeile 82:
   esac   esac
 done done
 +
 +
 +echo --------------------------------
 +echo List all hosts from Inventory $inventory
 +echo --------------------------------
  
 </code> </code>
Zeile 206: Zeile 216:
                                 set heading  off                                 set heading  off
                                 set feedback off                                 set feedback off
-                select name from v$disktab group by name;+                select name from v\$disktab group by name;
                 exit;                 exit;
 EOScipt` EOScipt`
Zeile 389: Zeile 399:
 srv02 srv02
 srv04 srv04
 +
 +# Zusammenfassen und deduplizieren
 +# Putt all SID's in one list
 +ALL_FOUND_DATABASES=( "${MY_VALUES[@]}" "${MY_VALUES[@]}" )
 +
 +# deduplidate
 +ALL_DATABASES=( `for i in ${MY_VALUES[@]}; do echo $i; done | sort -u` )
 +
  
 </code> </code>
Zeile 1109: Zeile 1127:
 done done
 </code> </code>
 +
 +
 +----
 +
 +==== MD5 Hash eines Verzeichnisses ====
 +
 +
 +Für jede Datei den MD5 Hash erzeugen und dann den Hash über die MD5 Hashes
 +
 +<code bash>
 +
 +
 +find . -type f -exec md5sum {} + | LC_ALL=C sort | md5sum
 +
 +
 +</code>
 +
 +siehe dazu im Detail => https://www.baeldung.com/linux/directory-md5-checksum
 +
 +
 +----
 +
 +==== Liste mit allen SID's des DB Hosts aus der oratab und dem Speicher ermitteln ====
 +
 +Liste aller SIDS laufender Datenbanken:
 +<code bash>
 + ps aux  | grep smon_ | grep -v grep | awk '{ print $11 }' | awk -F "_" '{ print $3 }'
 +</code>
 +
 +Code Beispiel um über die Oratab und über den Speicher die Liste aller aktiven Instanzen auf dem Host zu ermitteln:
 +<code bash>
 +
 +# try to find all database on this host over oratab
 +ALL_CONFIG_DATABASES=`cat /etc/oratab|grep -v "^#"|grep -v "N$"|cut -f1 -d: -s`
 +
 +# try to find all running database on this host if missing in oratab use memory
 +ALL_RUNING_DATABASES=`ps aux  | grep smon_ | grep -v grep | awk '{ print $11 }' | awk -F "_" '{ print $3 }'`
 +
 +# Putt all SID's in one list
 +ALL_FOUND_DATABASES=( "${ALL_CONFIG_DATABASES[@]}" "${ALL_RUNING_DATABASES[@]}" )
 +
 +# deduplidate
 +ALL_DATABASES=( `for i in ${ALL_FOUND_DATABASES[@]}; do echo $i; done | sort -u` )
 +
 +echo Start to read for this SIDs ${ALL_DATABASES[@]} at `date` the alert log
 +
 +for SID in $ALL_DATABASES
 +do
 +  # do
 +  # ... your code with $SID ...
 +  
 +done 
 +
 +</code>
 +
 +----
 +
 +====Finde log4j jars in wars ====
 +
 +Finde alle vorkommen von log4j aus bekannten Anlass in allen Wars auf der aktuellen Maschine
 +<code bash>
 +files=`find /. -name "*.war"`
 +for f in $files 
 +do 
 + echo "$HOSTNAME:$f:
 + unzip -l $f | grep -i log4j | awk -v host="$HOSTNAME" -v war=$f 'BEGIN { OFS = ":" }{ print host,  war,  $4 }'
 +done
 +</code>
 +
 +----
 +
 +====Wann wurde die VM in Betrieb genommen ====
 +
 +Auf einer geclonten DB Umgebung ist es gar nicht so einfach zu ermitteln wann das OS installiert wurde.
 +
 +Ein Ansatz ist mit "stat /" die "Birth" Angabe des Filesystems auszuwerten, das kann aber auch leer sein oder nur das inital Datum des Klones zeigen.
 +
 +In dieser Umgebung ist die Idee, die zugefügten Platten im LV dazu zu anlayiseren:
 +<code bash>
 +lvdisplay | grep $HOSTNAME | grep "LV Creation host" | sort -r | awk '{ print $6 " " $7 }' | tail -n 1
 +</code>
 +
 +----
 +====Eine Konfigurationdatei Zeilenweise einlesen  ====
 +
 +Zielenweise in ein Array eine Datei einlesen die z.B. aus mehreren Schemanamen besteht
 +
 +<code bash>
 +IFS=$'\n' read -d '' -r -a SCHEMAS  < ${ORACLE_BACKUP_HOME}/export_schemas.conf
 +</code>
 +
 +
 +----
  
 ====Quellen==== ====Quellen====
linux/bash_script_snippets.1550758903.txt.gz · Zuletzt geändert: 2019/02/21 15:21 von gpipperr