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? Zitieren
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??? Zitieren
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 Zitieren
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 Zitieren
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 Zitieren
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 Zitieren
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. Zitieren
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 Zitieren
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 ") Zitieren
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). Zitieren
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 Zitieren
Wolle Geschrieben 5. Juli 2007 Geschrieben 5. Juli 2007 Schau mal auf Datum vom letzten Post Zitieren
D3u5 Geschrieben 5. Juli 2007 Geschrieben 5. Juli 2007 Hehe, habs schon gemerkt. Allerdings erst nachdem ich die Antwort gepostet habe :upps Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.