Re: Récupérer une IP
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Bonjour, Le Jeudi 6 Février 2003 15:36, Francois Deppierraz a écrit : J'ai un petit exercice de style. J'ai besoin de récupérer l'adresse IP de ma passerelle ADSL. Avec /sbin/ifconfig | grep P-t-P | cut -d ' ' -f 12 | cut -b 6- je réccupère bien l'adresse IP, mais après ? Je veux remplacer l'ancienne adresse par la nouvelle adresse dans un fichier de conf (ligne ipadress= ) avant de relancer un service. Je pense qu'il faut utiliser sed, mais comment ? Je pense que tu as meilleur temps d'utiliser un petit script dans /etc/ppp/ip-up.d/ qui sera appellé par pppd avec la nouvelle adresse IP en argument. Oui, mais mon adresse IP change sans que /etc/ppp/ip-up.d/ soit utilisé. Où alors comment, je ne sais pas... Yann - -- http://www.forget-me.net Alternatives sur le Net http://keys.indymedia.org/showkey.py?key=0A34CBDA gpg --keyserver keys.indymedia.org --recv-key 0A34CBDA -BEGIN PGP SIGNATURE- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+Q7mom4KYjQo0y9oRAidaAJ9ohu9w0B7O0Gb9wIaZZ7ErzC6HygCeICDz 6PzbgMr1hph2dsm8tOP4rrY= =vsww -END PGP SIGNATURE- -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
Re: Récupérer une IP
On Friday 07 February 2003 14:48, Yann Forget wrote: yann@r2d2:~$ /sbin/ifconfig ppp0 ppp0 Link encap:Point-to-Point Protocol inet addr:81.48.176.239 P-t-P:81.48.176.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1 RX packets:23340 errors:0 dropped:0 overruns:0 frame:0 TX packets:19246 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:16668745 (15.8 MiB) TX bytes:2241692 (2.1 MiB) Il s'agit donc bien d'un exercise théorique et il est évident qu'il y a aussi d'autres moyens de parvenir à ce résultat. On peut presque considérer cela comme un jeu :-) L'objectif est de n'extraire que les adresse IP de la ligne contenant P-t-P en éliminant le texte; ceci en utilisant uniquement sed... et sans pipe. Mis à part la récupération de la commande ifconfig; 'faut pas éxagérer ! donc, on fait : yann@r2d2:~$ /sbin/ifconfig ppp0 |\ sed 's/^.*P-t-P/@/ /^[^@]/d s/^.*addr:// s/[ ]*P-t-P:/@/ s/[ ]*[Mask]*:.*$// s/\([0-9.]*\)@\([0-9.]*\)/\2 \1/' 81.48.176.1 81.48.176.239 - résultat yann@r2d2: La dernière ligne sert à permuter les deux IP... je ne me souviens plus si tu en avais besoin, mais je l'ai mis pour le fun :-) Mais bon, j'explique chaque ligne : s/^.*P-t-P/@/ Remplace le premier caractère de toute ligne contenant la chaîne P-t-P par le caractère '@'. J'ai ne fait besoin de marquer cette ligne car je veux me débarasser de toutes les autres. /^[^@]/d Je vire donc toutes les lignes qui ne commencent pas par le caractère '@'. s/^.*addr:// Je substitue tout ce qui se trouve depuis le début de la ligne jusqu'a la chaîne 'addr:' par rien-du-tout. s/[ ]*P-t-P:/@/ Je substitue tout ce qui se trouve entre le premier espace trouvé et la chaîne 'P-t-P:' par le caractère '@' (encore un marqueur pour la suite). s/[ ]*[Mask]*:.*$// La fin de la ligne ne m'intéresse pas et je vire donc tout ce qui suit la chaîne 'Mask:' (précédé d'espaces)... par rien-du-tout. s/\([0-9.]*\)@\([0-9.]*\)/\2 \1/ Et, finalement, comme je l'ai déjà dit, je permute les deux adresses IP... pour rigoler. Le résultat de l'exécution donne : 81.48.176.1 81.48.176.239 Bien sûr, il est possible d'écrire des commandes différentes, mais il me semble que nous sommes proche du nombre de commandes minimum. Daniel -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
Re: Récupérer une IP
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Re: Intéressant ! Mais est-ce vraiment nécessaire de marquer les lignes avant de les virer ? Yann Le Vendredi 7 Février 2003 17:01, Daniel Cordey a écrit : yann@r2d2:~$ /sbin/ifconfig ppp0 |\ sed 's/^.*P-t-P/@/ /^[^@]/d s/^.*addr:// s/[ ]*P-t-P:/@/ s/[ ]*[Mask]*:.*$// s/\([0-9.]*\)@\([0-9.]*\)/\2 \1/' La dernière ligne sert à permuter les deux IP... je ne me souviens plus si tu en avais besoin, mais je l'ai mis pour le fun :-) Mais bon, j'explique chaque ligne : s/^.*P-t-P/@/ Remplace le premier caractère de toute ligne contenant la chaîne P-t-P par le caractère '@'. J'ai ne fait besoin de marquer cette ligne car je veux me débarasser de toutes les autres. /^[^@]/d Je vire donc toutes les lignes qui ne commencent pas par le caractère '@'. - -- http://www.forget-me.net Alternatives sur le Net http://keys.indymedia.org/showkey.py?key=0A34CBDA gpg --keyserver keys.indymedia.org --recv-key 0A34CBDA -BEGIN PGP SIGNATURE- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+Q95mm4KYjQo0y9oRAgRzAJ96UYAxHO3nKNqxT6RILouWD0QsxgCaA5Fg rbzHkS7bL50JAto45+T6gBo= =zCgS -END PGP SIGNATURE- -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
Re: Récupérer une IP
On Friday 07 February 2003 17:27, Yann Forget wrote: Intéressant ! Mais est-ce vraiment nécessaire de marquer les lignes avant de les virer ? L'objectif étant de pouvoir écrire les commandes suivantes de manière simple. C'est à dire qu'elles puissent rester lisibles. Sinon, il est toujours difficile d'écrire des trucs du style : Vire-moi tout ce qui se trouve aprèes la troisième chaîne de caractère, jusqu'à la qatrième, tout en faisant attention que dans certains cas la trosième chaîne peut contenir un espace, parceque... Donc, je marque de manière sûre, j'exécute un truc facile à éecrire et, si nécessaire, j'enlève ensuite le marqueur. C'est une question de philosphie :-) Bon week-end Daniel -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
Re: Récupérer une IP
On Fri, Feb 07, 2003 at 02:50:32PM +0100, Yann Forget wrote: Oui, mais mon adresse IP change sans que /etc/ppp/ip-up.d/ soit utilisé. Où alors comment, je ne sais pas... Si l'IP change c'est que quelque chose la change: je penche pour pppoe. N'y a-t-il aucun `hook' dans ce logiciel pour notifier via un script ? Ca serait plus simple et propre, et très utile. Si ce n'est pas le cas je te conseille de faire un `reportbug' `wishlist'. -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
Récupérer une IP
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Bonjour, J'ai un petit exercice de style. J'ai besoin de récupérer l'adresse IP de ma passerelle ADSL. Avec /sbin/ifconfig | grep P-t-P | cut -d ' ' -f 12 | cut -b 6- je réccupère bien l'adresse IP, mais après ? Je veux remplacer l'ancienne adresse par la nouvelle adresse dans un fichier de conf (ligne ipadress= ) avant de relancer un service. Je pense qu'il faut utiliser sed, mais comment ? ping `/sbin/ifconfig | grep P-t-P | cut -d ' ' -f 12 | cut -b 6-` fonctionne, mais je n'arrive pas à utiliser sed. En plus, il y a peut-être plus élégant que mon petit hack. Merci, Yann - -- http://www.forget-me.net Alternatives sur le Net http://keys.indymedia.org/showkey.py?key=0A34CBDA gpg --keyserver keys.indymedia.org --recv-key 0A34CBDA -BEGIN PGP SIGNATURE- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+QnGSm4KYjQo0y9oRAoj8AJ0fG76DcR0CeWBJC/9LT19AhCDgYgCdECrF n3QVmu/c6gi4T060oEnvmX8= =ta6z -END PGP SIGNATURE- -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
Re: Récupérer une IP
On Thu, Feb 06, 2003 at 03:30:42PM +0100, Yann Forget wrote: Bonjour, Hello, J'ai un petit exercice de style. J'ai besoin de récupérer l'adresse IP de ma passerelle ADSL. Avec /sbin/ifconfig | grep P-t-P | cut -d ' ' -f 12 | cut -b 6- je réccupère bien l'adresse IP, mais après ? Je veux remplacer l'ancienne adresse par la nouvelle adresse dans un fichier de conf (ligne ipadress= ) avant de relancer un service. Je pense qu'il faut utiliser sed, mais comment ? Je pense que tu as meilleur temps d'utiliser un petit script dans /etc/ppp/ip-up.d/ qui sera appellé par pppd avec la nouvelle adresse IP en argument. -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
Re: Récupérer une IP
Yann Forget wrote: J'ai un petit exercice de style. J'ai besoin de récupérer l'adresse IP de ma passerelle ADSL. Avec /sbin/ifconfig | grep P-t-P | cut -d ' ' -f 12 | cut -b 6- je réccupère bien l'adresse IP, mais après ? Je veux remplacer l'ancienne adresse par la nouvelle adresse dans un fichier de conf (ligne ipadress= ) avant de relancer un service. Je pense qu'il faut utiliser sed, mais comment ? J'avais passe un certain temps a lutter avec sed et j'ai termine par me rabattre sur perle: si $ip1 et $ip2 sont deux variables shell contenants l'ancienne et la nouvelle addresse: perl -pi -e s%$ip1%$ip2%o fichier.de.conf Tu peux bien sur aussi utiliser des chaines textuelles (pas des variables shell) pour nommer les adresses. Vuko -- ===| Vuko Brigljevic,EP Research Fellow| CERN - European Laboratory for Particle Physics | - | Mail Address: CERN, Div. EP, 1211 Geneve 23 (Switzerland) | Office : B40-2B08| Phone : +41-22-767 1662 | e-mail : [EMAIL PROTECTED] | www : http://www.slac.stanford.edu/~vuko | ===| -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
Re: Récupérer une IP
On Thursday 06 February 2003 15:30, Yann Forget wrote: /sbin/ifconfig | grep P-t-P | cut -d ' ' -f 12 | cut -b 6- Je ne'ai pas de connection ADSL sous la moin et donc je n'arrive pas a savoir quelle est la structure de la ligne contenant ton P-t-P. Peux-tu m'envoyer un exemple de ton ifconfig et aussi m'ecrire ce que tu veux au final ? Je te ferai ca volontier...:-) Daniel -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
Re: Récupérer une IP
On Thu, 6 Feb 2003, Yann Forget wrote: Bonjour, J'ai un petit exercice de style. J'ai besoin de récupérer l'adresse IP de ma passerelle ADSL. Avec /sbin/ifconfig | grep P-t-P | cut -d ' ' -f 12 | cut -b 6- Dangereux ça, si tu as plusieurs interfaces ppp!? $ /sbin/ifconfig ppp0 | grep P-t-P | cut -d ' ' -f 12 | cut -b 6- serait mieux... ou encore $ /sbin/ifconfig ppp0 | tr :=\ \\n | grep -A1 addr | tail -n1 Pas mieux, différent;) je réccupère bien l'adresse IP, mais après ? Tu la mémorise: $ MyIp=$(/sbin/ifconfig ppp0 | tr :=\ \\n | grep -A1 addr | tail -n1) Je veux remplacer l'ancienne adresse par la nouvelle adresse dans un fichier de conf (ligne ipadress= ) avant de relancer un service. Je pense qu'il faut utiliser sed, mais comment ? $ cat monfile.conf | sed -e s/^ipadress=.*$/ipadress=$MyIp/ tmpfile $ cat tmpfile monfile.conf $ rm tmpfile ( Le ``^'' signifie début de ligne et le ``$'' signigie fin de ligne ) Par exemple... Si tu crains les accès multiples sur ton fichier de conf, alors un lock sera peut-être nécessaire... -- Félix Hauri - [EMAIL PROTECTED] - http://www.f-hauri.ch -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.