IP mit ifconfig rausfinden und dann ins Template schreiben lassen
Hi! Ich bin nicht gerade ein begnadeter shell-programmer, was man daran erkennen dürfte, dass das hier echt nicht schwer sein sollte :-) ich hatte auch schonmal einen solchen 3zeiler von einem von euch bekommen, allerdings is der samt meinem alten server in die ewigen jagdgründe emporgestiegen :-( Also: es geht um folgendes: ich brauche ein Script, das z.B. mit >>>> ifconfig | grep P-t-P | cut -f2 -d":" | awk '{ print $1 }' <<<< meine aktuelle Ip Adresse rausfindet, diese in einer Variablen ablegt, dann diese Variable in einer Template-Datei immer an die Stelle einfügt, an der ein bestimmter Platzhalter (z.B.: NEUE_IP_ADRESSE) hierfür steht, dann diese Templatedatei mit den neu eingefügten IP-Adressen unter einem anderem Namen speichert. PleasE helP!! Matthias PS: gibts gute online-dokus wo ich sowas lernen kann??
Hallo Matthias, * Am 18.11.2001 um 15:26 Uhr schrieb Matthias Tinnemeier:
ich brauche ein Script, das z.B. mit >>>> ifconfig | grep P-t-P | cut -f2 -d":" | awk '{ print $1 }' <<<< meine aktuelle Ip Adresse rausfindet, diese in einer Variablen ablegt, dann diese Variable in einer Template-Datei immer an die Stelle einfügt, an der ein bestimmter Platzhalter (z.B.: NEUE_IP_ADRESSE) hierfür steht, dann diese Templatedatei mit den neu eingefügten IP-Adressen unter einem anderem Namen speichert.
wie wär's hiermit: #!/bin/bash IP=$( ifconfig | \ grep "P-t-P" | \ cut -f2 -d":"| \ cut -f1 -d " " \ ) cat <<EOT >/tmp/ip_vom_$(date +%d%m%Y_%H%M%S) ---------------------------------- Aktuelle-IP: $IP ---------------------------------- EOT Bei jedem Aufruf des Scripts wird unter /tmp/ip_vom_ttmmjjjj_hhmmss die aktuelle INet-IP abgelegt. Aber Vorsicht! Bei mir (SuSE 7.2) liefert 'ifconfig' nicht P-t-P sondern P-z-P (Punkt-zu-Punkt). Das hätten die nun wirklich nicht eindeutschen sollen ;-) Jürgen -- Jeder hat ein System, reich zu werden, das nicht funktioniert. / Registered Linux-User #130804 http://counter.li.org \ \ Linux Stammtisch Bremerhaven http://linux.hs-bremerhaven.de /
Am Sonntag, 18. November 2001 15:26 schrieb Matthias Tinnemeier:
ich brauche ein Script, das z.B. mit >>>> ifconfig | grep P-t-P | cut -f2 -d":" | awk '{ print $1 }' <<<< meine aktuelle Ip Adresse rausfindet, diese in einer Variablen ablegt, dann diese Variable in
Über P-t-P wirst Du Deine IP sowieso nicht ermitteln können, abgesehen davon brauchst Du das Device, von dem Du es ermitteln willst. Wenn es um eine IP geht, die Du bei der Einwahl ins Internet kriegst, liegt die im Script /etc/ppp/ip-up bzw. ip-up.local vor, die brauchst Du nicht umständlich ermitteln. Ansonsten: meine_ip=`/sbin/ifconfig ippp0 | grep 'inet addr:' | cut -f2 -d":" | awk '{ print $1 }'`
einer Template-Datei immer an die Stelle einfügt, an der ein bestimmter Platzhalter (z.B.: NEUE_IP_ADRESSE) hierfür steht, dann diese Templatedatei mit den neu eingefügten IP-Adressen unter einem anderem Namen speichert.
cat template | sed -e "s/NEUE_IP_ADRESSE/${meine_ip}/g" > NeueDatei
PS: gibts gute online-dokus wo ich sowas lernen kann??
Keine Ahnung, ich weiß auch nur, was mir gelegentlich hier in der Liste oder bei bestehenden Scripts über den Weg läuft. -- Machs gut | http://www.iiv.de/schwinde/buerger/tremmel/ | http://www.knightsoft.de Manfred | http://www.knightsoft-net.de
On Sun, 18 Nov 2001, Manfred Tremmel wrote:
meine_ip=`/sbin/ifconfig ippp0 | grep 'inet addr:' | cut -f2 -d":" | awk '{ print $1 }'`
"The neverending Thread" oder was??? ==== dynip.sh ==== ### USAGE: dynip.sh [INTERFACE] IF="${1:-ppp0}"; /sbin/ifconfig $IF | sed -n 's/.*addr:\([0-9\.]*\).*/\1/p'; ==== Benchmarks zum Thema gibt's (von mir) im Archiv... Und auf Anfrage nochmal das bench-script... -dnh PS: Obige Variante hatte ich noch nicht, sollte aber aequivalent sein zu: grep ... | awk ... | cut ... (='tj2')... Ach was solls (leicht umformatiert und die aufgerufenen "Prozesse" als Kommentar eingefuegt)... $ ~/bin/dynip_testing.sh 2>&1 | grep 'real\|:' tj1: real 0m4.632s ## grep | awk | cut | perl tj2: real 0m3.287s ## grep | awk | cut dh4: real 0m1.805s ## echo `grep | sed` dh2: real 0m1.646s ## grep | sed dh1: real 0m1.324s ## sed (s.o.) dh3: real 0m1.381s ## echo `sed` sd1: real 0m2.055s ## perl ww1: real 0m2.261s ## grep | cut | cut mh1: real 0m4.322s ## grep | awk | awk mt1: real 0m3.267s ## grep | cut | awk (s.o.) dh5: real 0m0.957s ## bash-only dh1() ist obige Variante die mit einem sed auskommt. Und die ist _reproduzierbar_ die schnellste, die mir bisher ueber den Weg gelaufen ist. Ach, dascha interessant...: 'grep | awk | cut' ('tj2') ist langsamer als 'grep | cut | awk' ('mt1', s.o.)... :) Weitere Varianten sind gern gesehen *scnr*... ich tippe mal, nur bash-intern ist schneller.... die ich dann mal eben als 'dh5' selbst geschrieben habe: dh5() { while read l; do m="${l%%*addr:[0-9.]*}"; if test "x$m" = "x"; then a="${l//addr:/}"; a="${a// */}"; echo "$a"; fi; done; } -d'take 2'h -- "What's the word for a meal that's too late for breakfast or lunch, but too early for dinner, and takes the place of all three?" "Pizza." -- Joe Thompson and Christian Bauernfeind
Hallo, Am Sonntag, 18. November 2001 um 15:26 schrieb Matthias Tinnemeier, [ip Adresse] und als nicht shell programmierer von mir noch einmal den OT-Tip: einfache eine dynamische DNS verwenden. Kostet nix und klappt wunderbar ! (obwohl ich ja nicht weiss, wofür Du Deine IP Verwendest und das eigentlich nicht beurteilen kann) cu stonki
participants (5)
-
David Haller
-
Juergen Schwarting
-
Manfred Tremmel
-
Matthias Tinnemeier
-
Stefan Onken