85807
Goto Top

Skript um aus Datei auszulesen und in commandos umzulenken und Ausgabe prüfen

Hallo Administratoren,

Ich bin noch ein Neuling im Skripting (bash) und benötige Hilfe.
Ich will aus einer Datei (die ca. 300 Usernamen enthält) Zeile für Zeile einlesen und dann mit einem Commando absetzten.
Nach Absetzten eines commandos können 2 Rückmeldungen erfolgen und sollte diese "negativ" sein, soll das Ausgegeben werden.
Um das ganze anschaulicher zu machen hier ein Beispiel:

Datei:
UsernameABC
UsernameBCA
UsernameCBA
..


Commando-Ausgabe:

Befehl "UsernameABC" Option
Befehl "UsernameBCA" Option
Befehl "UsernameCBA" Option

Ausgabe:

"UsernameBCA" was not successfull

Ich mir ein paar Tutorials angesehen aber ich bin mir nicht sicher wie ich in bash Zeile für Zeile einlese und dann mittels variable absetzen kann.


bg,
Christian


Wie generiere ich das am besten?

Content-Key: 274114

Url: https://administrator.de/contentid/274114

Printed on: May 8, 2024 at 23:05 o'clock

Mitglied: 114757
114757 Jun 09, 2015 updated at 13:53:43 (UTC)
Goto Top
Beispiel
#!/bin/bash
while read line
do
    case $line in
       "UsernameABC")  
        echo "Tu hier was mit ABC"  
        ;;
       "UsernameBCA")  
        echo "Tu hier was mit BCA"  
        ;;
       "UsernameCBA")  
        echo "Tu hier was mit CBA"  
        ;;
   esac
done < /var/deinedatei.log
Wenn du etwas genauer wirst mit deiner Schilderung kann man das natürlich noch optimieren, aber anhand deiner Beschreibung ist das etwas schwer zu erraten.
Wenn es nur darum geht Usernamen zu Suchen geht das noch einfacher mit grep.

Gruß jodel32
Mitglied: 85807
85807 Jun 09, 2015 updated at 14:35:21 (UTC)
Goto Top
Hallo jodel32,

Ich werds mal etwas anders formulieren, damit es etwas verständlicher wird.

Ich hab Usernamen in einer txt Datei. 300 Stück. 1e Reihe. Sonst steht da nichts drin.

Nun soll das Script erstmal hergehen und den ersten Usernamen nehmen und vor und nach dem Namen einen Text hinzufügen (könnte ich zwar im Excel auch aber ich will das alles im script machen (zwecks Automatisation).
Dann soll es diese Zeile ( "Text username Text" ) ausführen.
Danach soll es je anhand der Rückmeldung (ich denke, das nennt man stdout) festhalten ob es eine Fehlermeldung war.
Es soll das mit jedem Usernamen in der txt machen. (Mir schwebt da eher eine While-Do-Schleife vor)

Im Grunde muss ich prüfen ob in einer Datenbank die user noch aufgelöst werden können und dann die User notieren, die nicht mehr aufgelöst werden, damit ich sie auf einem anderen system löschen kann.

Also, das Skript soll die usernamen nehmen und mit einer Abfrage verbinden.

Säter mal möchte ich noch das Skript ausbauen indem es dann die usernamen nimmt bei dehnen die Auflösung nicht mehr möglich ist und dann eine Zeile in einer anderen Datei löscht in der dieser usernamen vorkommt face-smile
Mitglied: 114757
114757 Jun 09, 2015 updated at 14:52:47 (UTC)
Goto Top
Wenn dein Befehl als Exit-Code bei Mißerfolg <> 0 und bei Erfolg 0 zurückgibt, kannst du das hier verwenden:
#!/bin/bash
while read line
do
    if [ "$line" != "" ] ;then  
        Befehl "$line" Option  
        if [ $? -ne 0 ] ;then
           echo "Der User '$line' hat einen Fehler verursacht"  
        fi
    fi
done < /var/users.txt
Befehl und Optionen und Pfad der Textdatei natürlich anpassen.

Testen welche Errorcodes dein Befehl zurückliefert kannst du mit einem echo $? anzeigen lassen direkt nachdem du deinen Befehl ausgeführt hast.

Gruß jodel