Veröffentlicht 17. Januar 200619 j #!/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?
17. Januar 200619 j 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???
17. Januar 200619 j 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
17. Januar 200619 j 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
17. Januar 200619 j irgendwann hatte ich das zwa schon mal so, aber: ES GEHT!! Du bist mein Held *g* Danke!!! :e@sy
17. Januar 200619 j 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
17. Januar 200619 j 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.
17. Januar 200619 j 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
17. Januar 200619 j 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 ")
17. Januar 200619 j 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).
5. Juli 200718 j 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
5. Juli 200718 j Hehe, habs schon gemerkt. Allerdings erst nachdem ich die Antwort gepostet habe :upps
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.