Honney86 Geschrieben 17. Januar 2006 Geschrieben 17. Januar 2006 #!/bin/bash for i in 1 2 3 do if (( $i == "1" )) ; then var=`df -h | grep c0t3d0s0 | awk '{print $5}' | sed 's/%//'` fi if (( $i == "1" )) ; then var=`df -h | grep c0t3d0s3 | awk '{print $5}' | sed 's/%//'` fi if (( $i == "1" )) ; then var=`df -h | grep c0t3d0s4 | awk '{print $5}' | sed 's/%//'` fi if (( $var >= 2 )) then awk '{$var}' > /tmp/test cat /tmp/test |mailx blabla@soso.de; fi done Irgendwie funktioniert das nicht... hab aber natürlich meine richtige mail addy eingetragen, wer kann mir helfen?
1226 Geschrieben 17. Januar 2006 Geschrieben 17. Januar 2006 versuch es mal mit if [ $i -eq 1 ] anstelle von if (( $i == "1" )) und mit if [ $var -gt 2 ] anstelle von if (( $var >= 2 )) Sollte vielleicht im zweiten und dritten if-Konstrukt i auf 2 bzw. 3 geprüft werden???
Honney86 Geschrieben 17. Januar 2006 Autor Geschrieben 17. Januar 2006 Sollte vielleicht im zweiten und dritten if-Konstrukt i auf 2 bzw. 3 geprüft werden??? Ähm, ja kla... das is auch im Original so aber die anderen sachen werd ich mal probieren.... ich berichte gleich... Edit: Die veränderung bringt garnix, es passiert genau das gleiche... nämlich nix, ich rutsch nur ins schwarze aus dem ich nur mit Ctrl+C wieder rauskomme
1226 Geschrieben 17. Januar 2006 Geschrieben 17. Januar 2006 if (( $var >= 2 )) then awk '{$var}' > /tmp/test cat /tmp/test |mailx blabla@soso.de; fi Ich störe mich etwas an dem awk. Was willst du damit machen? Den Inhalt von var nach test schreiben? Dann sollte da stehen echo $var > /tmp/test
Honney86 Geschrieben 17. Januar 2006 Autor Geschrieben 17. Januar 2006 irgendwann hatte ich das zwa schon mal so, aber: ES GEHT!! Du bist mein Held *g* Danke!!! :e@sy
Honney86 Geschrieben 17. Januar 2006 Autor Geschrieben 17. Januar 2006 ENDERGEBNIS: #!/bin/bash for i in 1 2 3 do if (( $i == "1" )) ; then var=`df -h | grep c0t3d0s0 | awk '{print $5}' | sed 's/%//'` name=`df -h | grep c0t3d0s0 | awk '{print $6}'` fi if (( $i == "2" )) ; then var=`df -h | grep c0t3d0s3 | awk '{print $5}' | sed 's/%//'` name=`df -h | grep c0t3d0s3 | awk '{print $6}'` fi if (( $i == "3" )) ; then var=`df -h | grep c0t3d0s4 | awk '{print $5}' | sed 's/%//'` name=`df -h | grep c0t3d0s4 | awk '{print $6}'` fi if (( $var >= 20 )) then echo $var > /tmp/test echo $name >> /tmp/test cat /tmp/test |mailx xxxxxxxx.xxxxxx@xxxxx.de; fi done
1226 Geschrieben 17. Januar 2006 Geschrieben 17. Januar 2006 wie wäre es mit: #!/bin/bash for i in c0t3d0s0 c0t3d0s3 c0t3d0s4 do var=`df -h | grep $i| awk '{print $5}' | sed 's/%//'` name=`df -h | grep $i | awk '{print $6}'` if (( $var >= 20 )) then echo $var > /tmp/test echo $name >> /tmp/test cat /tmp/test |mailx xxxxxxxx.xxxxxx@xxxxx.de; fi done Die for-Schleife wird genau dreimal durchlaufen, und bei jedem Durchlauf wird eines der if-Konstrukte durchlaufen. Ist also eigentlich unnötig, diese Prüfung einzubauen.
Honney86 Geschrieben 17. Januar 2006 Autor Geschrieben 17. Januar 2006 Die for-Schleife wird genau dreimal durchlaufen, und bei jedem Durchlauf wird eines der if-Konstrukte durchlaufen. Ist also eigentlich unnötig, diese Prüfung einzubauen. Ähm... ja das geht natürlich auch... *G* naja nun hab ich 2 Möglichkeiten *g* manchmal steht man einfach auf dem Schlauch und sieht nicht, dass es eigentlich so einfach ist.... Danke
Honney86 Geschrieben 17. Januar 2006 Autor Geschrieben 17. Januar 2006 neue Aufgabe neues problem. #!/bin/bash for var in hme do ndd -set /dev/$var instance 0 if (( ndd -get /dev/$var link_speed == 1 )) then echo 'Der link_speed beraegt 100' > /tmp/test else if (( ndd -get /dev/$var link_speed == 0 )) then echo 'Der link_speed beraegt 10' > /tmp/test; fi; fi if (( ndd -get /dev/$var link_status == 1 )) then echo 'Der link_status ist connected' >> /tmp/test else if (( ndd -get /dev/$var link_status == 0 )) then echo 'Der link_status ist disconnected' >> /tmp/test; fi; fi if (( ndd -get /dev/$var link_mode == 1 )) then echo 'Der link_mode ist full-duplex' >> /tmp/test else if (( ndd -get /dev/$var link_mode == 0 )) then echo 'Der link_mode ist half-duplex' >> /tmp/test; fi; fi cat /tmp/test done fehler: ./netspeed: ((: ndd -get /dev/hme link_speed == 1 : division by 0 (error token is "/hme link_speed == 1 ") ./netspeed: ((: ndd -get /dev/hme link_speed == 0 : division by 0 (error token is "/hme link_speed == 0 ") ./netspeed: ((: ndd -get /dev/hme link_status == 1 : division by 0 (error token is "/hme link_status == 1 ") ./netspeed: ((: ndd -get /dev/hme link_status == 0 : division by 0 (error token is "/hme link_status == 0 ") ./netspeed: ((: ndd -get /dev/hme link_mode == 1 : division by 0 (error token is "/hme link_mode == 1 ") ./netspeed: ((: ndd -get /dev/hme link_mode == 0 : division by 0 (error token is "/hme link_mode == 0 ")
1226 Geschrieben 17. Januar 2006 Geschrieben 17. Januar 2006 if (( ndd -get /dev/$var link_speed == 1 )) Verstehe ich das richtig, dass du in den if-Konstrukten prüfen willst, ob der Rückgabewert von ndd -get ... gleich 1 ist? Dann kann das so nicht funktionieren. Versuch es mal mit if (( $(ndd -get /dev/$var link_speed) -eq 1 )) in der if-Abfrage (entsprechend für die anderen if anzupassen).
D3u5 Geschrieben 5. Juli 2007 Geschrieben 5. Juli 2007 Also ich weis nicht genau wie das bei der Bash ist, aber wenn man in der Bourne-Shell eine if-Abfrage macht, benötigt man ein "test". Also if test $i == "1" then oder alternativ if [$i == "1"] then Die eckigen Klammern stehen auch für "test" MfG Deus
D3u5 Geschrieben 5. Juli 2007 Geschrieben 5. Juli 2007 Hehe, habs schon gemerkt. Allerdings erst nachdem ich die Antwort gepostet habe :upps
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden