• Korn Shell / Bash,  Shell Scripting

    Mehrfache Einträge in großen Konfigurationsdateien oder Protokollen finden (Linux/Unix Lösung)

    Oft vermutet man in größeren Protokolldateien oder Konfigurationsdateien mehrfach vorhandene Einträge. Diese sollen schnell ermittelt und bei Bedarf entfernt werden. Unter Linux gibt es das Werkzeug uniq. Der Parameter --count gibt alle Zeilen aus und die Häufigkeit Ihres Auftretens in der ersten Spalte. Es funktioniert nur nicht so intuitiv, wie erwartet. Ich versuche es an einem Beispiel: uniq –count console.log 1 <?xml version=”1.0″ encoding=”UTF-8″ ?> 1 <Protokollzeile xxxyyyzzz > Diese Datei hat offensichtlich zwei Zeilen insgesamt und beide unterscheiden sich. Das ist im Moment nicht sehr hilfreich. Daher verdoppele ich die Datei und füge eine einzeln vorkommende Zeile hinzu: cat console.log >> consoleDup.log cat console.log >> consoleDup.log echo “Eine abweichende…

  • IBM WebSphere Application Server,  Middleware,  Security

    XOR Passwort Encode/Decode für IBM Websphere XML Konfigurationsdateien

    IBM Websphere speichert Passwörter der WebSphere Application Server Konfiguration in XML Dateien im Profilpfad der WAS Adminkonsole (IBM Integrated Solutions Console – ISC). Diese Passwörter sind nicht verschlüsselt, sondern nur per XOR kodiert. Da a xor b xor b = a gilt, kann ein XOR kodiertes Passwort auch wieder im Klartext ausgegeben werden. IBM liefert Werkzeuge für den Decode/Encode Vorgang gleich mit. Um dies zu verdeutlichen, betrachte ich einen Passwordhash einer IBM WebSphere Application Server Zelle (security.xml). Die kodierten Passwörter können einfach gefunden werden: grep xor security.xml Vorgehensweise für Websphere 8.0 und 8.5 – Decoding Zuerst in das Verzeichnis <WAS_HOME> wechseln. Von dort den Decoder Prozess ausführen: java/bin/java -Djava.ext.dirs=./plugins:./lib com.ibm.ws.security.util.PasswordDecoder…

  • SAP,  Systemkopie,  Transportwesen

    Ändern der aktuellen SAP Transport Requestnummer

    Unter Umständen möchte man die aktuelle Nummer der Transportrequests anpassen, beispielsweise nach einer Systemkopie auf ein Entwicklungssystem, wenn der Nummernkreis voll ist, oder nach einer Wiederherstellung des SAP Systems. Die Gründe können vielfältig sein. Die letzte Nummer der Transporte ist in Tabelle E070L gespeichert. Dafür hat SAP den Report RSWBO301 vorgesehen. Dieser Report sucht ein freies Intervall für die Nummernvergabe bei Aufträgen. Der SAP Hinweis 106911 – Transportsystem: Nummernkreis bei Aufträgen voll ist sehr empfehlenswert. Bitte lesen Sie die Dokumentation des Reports genau (i – Knopf auf der Startseite des Reports). Die Änderung der Transport Nummer sollte mit Bedacht und wissend der Abhängigkeiten erfolgen. Ein Zurücksetzen der Nummer unter den…

  • Shell Scripting,  Windows Bash

    Windows bash – Zugriff auf lokale Verzeichnisse

    Lokale Verzeichnisse in der Windows Bash können über den automatischen eingebunden Mount /mnt/ gelesen und geändert werden. [user1:/mnt/d/Cache] $ ls -ld /mnt/* drwxrwxrwx 0 root root 512 Mar 19 10:17 /mnt/c drwxrwxrwx 0 root root 4096 Mar 19 10:17 /mnt/d Der Zugriff auf C:\Users\user1\Documents (= Eigene Dokumente des Benutzers user1) erfolgt beispielsweise per: ls /mnt/c//Users/user1/Documents/

  • PowerShell,  Windows

    Umgebungsvariablen in der PowerShell

    Abfragen von Umgebungsvariablen Die Anzeige der Umgebungsvariablen war in der “alten” Kommandozwile (cmd) einfach per env durchzuführen. Die PowerShell bietet einen ähnlich einfachen Aufruf mit Get-ChildItem oder per Alias gci. Zu beachten ist, dass Get-ChildItem einen Pfad erwartet: Get-ChildItem env: Eine bestimmte Variable kann mit env: abgefragt werden: gci env:PATH Einfacher kann die Variable auch wie jeder Variable in Powershell angezeogt werden. $Env:Path Dieser Weg eignet sich besonders gut für Skripte. An dieser Stelle zeigt die PowerShell ihre Stärke. Die Variable kann mit Zeichenkettenoperationen weiter verarbeitet werden, da es ein STRING Objekt ist. Beispielsweise kann -replace zum Bearbeiten von Teilen der Variable verwendet werden: $Env:myVar=”Toast” $Env:myVar Toast $Env:myVar = $Env:myVar…

  • PowerShell,  Windows

    Powershell Test offener Ports auf einem Host

    Unter Unix ist der Test offener Ports mit telnet <hostname> <port> beispielsweise: telnet slomka.biz 443 eine übliche Vorgehensweise. Unter Windows ist ein telnet Client meist nicht installiert. Die Powershell bietet mit dem Kommando Test-NetConnection eine sehr starken Alternative: Test-NetConnection -ComputerName slomka.biz -Port 443 ComputerName : slomka.biz RemoteAddress : 81.169.145.68 RemotePort : 443 InterfaceAlias : vEthernet (Virtueller Switch Qualcomm Atheros AR9485WB-EG Wireless Network Adapter) SourceAddress : 192.168.4.202 TcpTestSucceeded : True Für Skripte ist der Parameter -InformationLevel quiet sehr nütlich. Sie gibt nur ein True oder False zurück und kann damit in Abfragen einfach ausgewertet werden. Test-NetConnection -ComputerName slomka.biz -CommonTCPPort http -InformationLevel quiet True

  • Korn Shell / Bash

    Zeichen aus Zeichenketten mit bash/ksh schneiden

    Mit bash oder Korn Shell kann man auf einfachem Wege Zeichen in Zeichenketten ermitteln, bzw. herausschneiden. Dazu ist einfach nach einer Variable mit : getrennt die erste zu ermittlende Position anzugeben, gefolgt von einem weiteren : mit der Anzahl der auszugebenden Zeichen. ${VARIABLENAME:<erstes Zeichen>:<Anzahl>} Beispiel: TEXT="Holger Slomka" echo ${TEXT:2:3} lge Ein Beispiel für eine mögliche Verwendung, ist die Ausgabe aller Zeilen einer Datei, die nicht mit # beginnen. for Zeile in `cat inifile| cut -d’ ‘ -f1`; do if [[ ${Zeile:0:1} != “#” ]]; then   echo $Zeile/span> fi done Es werden also Kommentarzeilen ausgeblendet, analog grep -v ^#.

  • Korn Shell / Bash,  Shell Scripting

    Sehr nützliche grep Funktionen

    grep wird von Linuxx/Unix Administratoren zwar sehr oft genutzt, einige sehr mächtige Optionen werden aber zu Unrecht wenig genutzt oder sind den Administratoren nicht bekannt. 1. Zeilen vor und nach der Fundstelle des Suchbegriffs ausgeben. grep bietet die äusserst nützliche Funktion, Zeilen vor und nach dem gefundenen Suchbegriff anzuzeigen. Um die Funktionen der grep Optionen darzustellen, verwende ich als Beispiel ein IBM Skript mit folgendem Inhalt, das von grep durchsucht wird: cat collector.sh #!/bin/sh binDir=`dirname ${0}` . ${binDir}/setupCmdLine.sh ${WAS_HOME}/bin/collector.sh “$@” Die Option -A zeigt n Zeilen nach der Fundstelle an. grep -A 1 setup collector.sh . ${binDir}/setupCmdLine.sh ${WAS_HOME}/bin/collector.sh “$@” Die Option -B zeigt n Zeilen vor der Fundstelle an. grep…

  • Oracle Datenbank,  Systemkopie

    Fehlermeldung nach Systemkopie: ORA-01124 file is in use

    Wenn nach einem Restore die folgende Fehlermeldung auftritt, kann dies eine ganz banale Ursache haben: SQL> recover database using backup controlfile until cancel; ORA-00283: recovery session canceled due to errors ORA-01124: cannot recover data file 1 - file is in use or recovery ORA-01110: data file 1: 'D:\ORACLE\HSL\SAPDATA1\SYSTEM_1\SYSTEM.DATA1' Es ist zu prüfen ob die Datenbank bereits geöffnet ist. Diese Situation kann zu Beispiel auftreten, wenn CONTROL.SQL im Rahmen einer SAP Systemkopie ausgeführt wurde. select status from v$instance; STATUS ------------ OPEN Dieer Fehler tritt unter Umständen auf, wenn das von ora_br_copy (siehe SAP Hinweis 784118) erzeugte CONTROL.SQL zuvor ausgeführt wurde. Dies öffnet die Datenbank. Also kein Fehler. Ist ein Recover trotzdem…

  • Kernel,  SAP

    SAP Kernel Neuigkeiten

    Der SAP Kernel ist eine der dynamischsten Komponenten. Aktuell bleibt man am besten, wenn man dem Blog SAP Kernel: Important News folgt. Möchte man Informationen zu einem speziellen SAP Kernel, bietet sich die SAP Suche in der Wissensdatenbank des SAP Support Launchpads an: https://launchpad.support.sap.com/ Als Suchbegriff gibt man den Kernel in der folgenden Art ein: KRNLxxxPLyy, z.B. KRNL749PL400für den SAP Kernel 7.49 mit Patchlevel 400. Die folgenden beiden Seiten sind sehr gute Informationsquellen, um die Abhängigkeiten zwischen Netweaver und dem SAP Kernel zu verstehen: Understanding Kernel Releases for the SAP NetWeaver AS ABAP und SAP Hinweis 1969546 – Release Roadmap Kernel 740