Anzeige:
Ergebnis 1 bis 5 von 5

Thema: bash und if hinterinander

  1. #1
    Registrierter Benutzer
    Registriert seit
    18.12.2008
    Beiträge
    39

    bash und if hinterinander

    Hallo

    also nmap sucht im netz, wenn der die ip (192.168.2.100 ond 192.168.2.101) findet, dann im netz.html nur text ändern, von inaktiv in aktiv, wenn ich das so mache;
    Code:
    #!/bin/bash
    nmap -sP 192.168.2.1-255 | grep "for" | awk '{print $5}' | while read line ;do
    
    html=`cat netz.html`
    
    if [ $line == 192.168.2.100 ] ; then
       html=`echo "$html" | sed "/uli/ s/inaktiv/aktiv/"`
       echo "$html" > netz.html
     else
       html=`echo "$html" | sed "/uli/ s/aktiv/inaktiv/"`
       echo "$html" > netz.html
    fi
    
    if [ $line == 192.168.2.101 ] ; then
       html=`echo "$html" | sed "/leo/ s/inaktiv/aktiv/"`
       echo "$html" > netz.html
     else
       html=`echo "$html" | sed "/leo/ s/aktiv/inaktiv/"`
       echo "$html" > netz.html
    fi
    
    done
    ändert er nur leo von inaktiv in aktiv, uli will er nicht, obwohl uli mit nmap gefunden wird....ich bin mir sicher das ich bei if etwas nicht verstanden habe...also, was habe ich falsch gemacht?

    Danke im voraus für Antwort

    Gruss,
    Roki

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Das Problem ist, dass
    Code:
    html=`cat netz.html`
    Die HTML-Datei ausliest. Mit dem ersten if-block überschreibst du die Datei. Mit dem zweiten if-Block überschreibst du die Datei nochmal, womit du natürlich die Ergebnisse vom ersten if-Block zerstörst.

    Zusätzlich machst du das ganze bei jedem Durchlauf in der For-Schleife. Das heisst, selbst wenn in der ersten Zeile (erster For-Schleifendurchlauf) uli als aktiv erkannt wird, wird er das ja nicht beim zweiten Schleifendurchlauf (weil da z.B. line == 192.168.2.101 ist) und dann wird er da wieder zurückgesetzt.

    Du möchtest wohl eher sowas in die Richtung
    Code:
    NM=$(nmap -sP 192.168.2.1-255);
    FILE=netz.html
    
    if echo $NM | grep -q 192.168.2.100; then
      sed '/uli/ s/inaktiv/aktiv/' -i $FILE
    else
      sed '/uli/ s/aktiv/inaktiv/' -i $FILE
    end
    
    etc
    MfG Peschmä
    Geändert von peschmae (09-05-2010 um 10:00 Uhr)
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    18.12.2008
    Beiträge
    39
    Hallo Peschmä,
    Danke für Antwort...

    wenn ich das so versuche:

    Code:
    #!/bin/bash
    
    NM=$(nmap -sP 192.168.2.1-255);
    FILE=netz.html
    
    if echo $NM | grep -q 192.168.2.100; then
      sed '/uli/ s/inaktiv/aktiv/' -i $FILE
    else
      sed '/uli/ s/aktiv/inaktiv/' -i $FILE
    end
    kommt:
    Zeile 11: Syntax Fehler: Unerwartetes Dateiende.

    Gruss,
    Roki

  4. #4
    Registrierter Benutzer Avatar von John W
    Registriert seit
    29.01.2010
    Beiträge
    211
    "fi", nicht "end"

  5. #5
    Registrierter Benutzer
    Registriert seit
    18.12.2008
    Beiträge
    39
    stimmt, Danke!

    so funktioniert es:
    Code:
    #!/bin/bash
    
    NM=$(nmap -sP 192.168.2.1-255)
    FILE=netz.html
    
    if echo $NM | grep -q "192.168.2.100" ; then
      sed '/uli/ s/inaktiv/aktiv/' -i $FILE
    else
      sed '/uli/ s/aktiv/inaktiv/' -i $FILE
    fi
    
    if echo $NM | grep -q "192.168.2.101" ; then
      sed '/leo/ s/inaktiv/aktiv/' -i $FILE
    else
      sed '/leo/ s/aktiv/inaktiv/' -i $FILE
    fi
    
    exit 0
    Gruss,
    Roki

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •