WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Linux, UNIX, Open Source (http://www.wcm.at/forum/forumdisplay.php?f=13)
-   -   Shell script (http://www.wcm.at/forum/showthread.php?t=70383)

K@sperl 18.09.2002 17:32

Shell script
 
Ich bin grad dabei mir ein kleines Shellscript zu schreiben.
Und zwar möchte ich trotz meiner Firewall Regeln ein traceroute machen ...
Wenn ich jetzt ein traceroute machen will muß ich immer zuerst zwei Firewall Regeln hinzufügen und erst dann kann ich ein traceroute machen.
Ich möchte es jedoch ein Script schreiben das die Firewall Regeln automatisch hinzufügt und dann ein traceroute macht. Das Hinzufügen der Regeln ist kein Problem, jedoch das traceroute.
Ich will das script z.B. als tracert aufrufen, jedoch wie schaff ich es wenn ich z.B. "tracert www.wcm.at" eingebe daß der Host an das script übergeben wird?
Das script sollte folgendermaßen aussehen:
iptables ..... #iptables Regeln
traceroute


Bei DOS hätte ich nach traceroute "%1 %2" geschrieben damit die Konsole die entsprechende Option an das script weitergibt, aber wie geht das bei Linux?

0x0001 18.09.2002 18:19

man bash
oder
man tcsh
:ms:

Und bevor man mich hier abmurkst noch kurz die loesung:)

$1 $2 und so weiter.
Wenn du alle parameter uebergeben willst verwende entweder $* oder $@. In der variablen $# steht die anzahl der parameter (falls du das abfragen willst).

btw wenn du oefter mal shellscripts schreiben solltest empfehle ich das studium des Advanced Bash-Scripting Guide [1]. Zum schnellen Studium dessen was du brauchst, bzw brauchen koenntest schau doch auch mal in den guide[2].

[1]http://www.tldp.org/guides.html#abs
[2]http://www.tldp.org/LDP/abs/html/int...ml#POSPARAMREF

K@sperl 21.09.2002 17:56

Irgendwas passt da mit meinem Script noch nicht, denn wenn ich tracert host eingebe mach er zwar brav ein traceroute, aber die zwei iptables Regeln nach dem traceroute arbeitet er nicht ab, aber ich weiß nicht warum ...

Hier mal das script:
Code:

#!/bin/sh
iptables -I INPUT 28 -i ppp0 -p icmp -j ICMPINBOUND
iptables -I OUTPUT -o ppp0 -j ACCEPT
traceroute $*
iptables -D INPUT -i ppp0 -p icmp -j ICMPINBOUND
iptables -D OUTPUT -o ppp0 -j ACCEPT


K@sperl 22.09.2002 18:22

So, ich weiß jetzt warum er die letzen Befehle nicht abarbeitet:
Wenn bei einem traceroute nur mehr timeouts sind drücke ich [Strg]+[C] um abzubrechen und dadurch wird auch das script beendet.
Wie realisiere ich das nun, wenn das script abgebrochen wird trotzdem noch die letzten Befehle ausgeführt werden?
Mit "exit" oder "trap" hab ich das nicht hinbekommen ...


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag