Page 1 sur 1

Son IP publique en une ligne de commande

Posté : ven. 15 juin 2018 00:15
par kiri
...

Re: Son IP publique en une ligne de commande

Posté : sam. 16 juin 2018 04:35
par alain
Salut Kiri Image

Merci pour ce petit cours sur l'utilisation de grep et sed.

Comme j'ai dit dans la prèz de Kotec,
Je me suis penché (non je ne suis pas tombé :l ) sur les options que tu utilises. Car j'aimerai progresser un peu.
Il s'avère que je n'ai pas compris :l :roll:
le man de grep reste nébuleux, pour mon cerveau qui certes est fatigué, mais quand même...
Exemple: pour l'opton "o" :
N'imprimez que les parties appariées (non vides) d'une ligne correspondante, chacune de ces parties étant sur une ligne de sortie distincte.
c'est c'la oui c'est c'la...
et pour "P" :
Interprétez le modèle comme une expression régulière compatible Perl (PCRE). Ceci est très expérimental et grep -P peut avertir de fonctionnalités non implémentées.
Pas mieux... :oops:

Je prends donc acte que ça fonctionne, même si je n'ai pas compris comment tu as as fait, dans l'exemple avec ipecho, pour déterminer la syntaxe nécessaire à "P" pour ne garder
que ce qui est compris entre "is" et "/h1" :
'(?<=is ).*(?=<\/h1>)'
Tu l'as trouvé comment ça?
Ni pourquoi le "<" du html devant "/h1" n’apparaît pas, vu qu'a première vu tu lui dis d’écrire ce qu'il y a devant "/h1"... Oui certainement que les "<" et ">" du html ont un comportement particulier, mais pourquoi???

Enfin bref, c'est pas bien grave, ni important, l'important c'est que ça fonctionne, et que je pourrais utiliser ces options pour me la péter sur le fofo :l :lol:
Ces temps ci, je n'ai pas le temps ni les capacités pour réfléchir et apprendre. Mais si tu veux au mois d’août j'aurai l’esprit un peu plus disponible vu que je serai
célibataire pour quelques semaines, J'ouvrirai peut être un sujet sur l'utilisation des commandes de filtrage. Car malgré une littérature importante sur le sujet
(merci @Arghlub pour les liens) j'y comprends pas grand chose...

Encore merci pour ce partage. Image

Re: Son IP publique en une ligne de commande

Posté : sam. 16 juin 2018 08:14
par kiri
...

Re: Son IP publique en une ligne de commande

Posté : sam. 16 juin 2018 09:14
par alain
Ok, j'ai compris :l
Je faisais une erreur, en fait la patern2 (<\/h1>) comprend bien les "<>" du html. donc normal que le premier "<" ne soit pas affiché.
J'avais très mal lu et interprété :oops:
Je ne savais pas que grep contrairement à sed n'avais pas besoin qu'on annule le /.
Encore un truc que j'apprends.
Merci pour ces explications. J'ai bien d'autres questions, mais ça attendra août, car la je ne suis pas "open" , "aware" peut être? :l :D

Re: Son IP publique en une ligne de commande

Posté : sam. 16 juin 2018 11:50
par arghlub
Salut kiri et Alain ;)

Pour Alain, je reviens sur :

- option -o de Grep
L'option -o permet de n'imprimer que la chaîne recherchée et pas la ligne entière. Et chaque motif trouvé est envoyé vers la sortie sur une nouvelle ligne.
Cela ne représente guère d'intérêt, sauf si on le couple avec des expressions régulières.
Un exemple simple pour comprendre :

Code : Tout sélectionner

$ echo -e "aaa bbb\nccc ddd\naaaa bbbb"
aaa bbb
ccc ddd
aaaa bbbb

$ echo -e "aaa bbb\nccc ddd\naaaa bbbb" | grep "aa"       # sans l'option o
aaa bbb
aaaa bbbb

$ echo -e "aaa bbb\nccc ddd\naaaa bbbb" | grep -o "aa"    # avec l'option o
aa
aa
aa
- option -P de Grep
Les expressions régulières peuvent avoir plusieurs syntaxes :
  • expressions régulières basiques (BRE) : le grep par défaut ;
  • expressions régulières étendues (ERE) : à utiliser avec «grep -E» (ou «egrep» déprécié) ;
  • expressions régulières compatibles PERL (PCRE) qui ont une syntaxe dérivée du langage Perl : à utiliser avec «grep -P».
Donc, si une expression régulière PCRE est utilisée, il faut utiliser l'option -P.

;)

Re: Son IP publique en une ligne de commande

Posté : sam. 16 juin 2018 15:25
par mpedro
Message edité
T aurais pu faire plus simple.
Avec curl wget ou dig. :D

Re: Son IP publique en une ligne de commande

Posté : sam. 16 juin 2018 18:47
par zeb
:l
Merci pour la soluc mpedro :lol:
Ou alors c'est une question, là il manquerait le point d'interrogation :D

Re: Son IP publique en une ligne de commande

Posté : dim. 17 juin 2018 03:07
par alain
Salut Arghlub.

Okayyy, j'ai compris. C'est quand même plus facile a comprendre avec des exemples concrets :D ...Merci ;)
Donc pour résumer et pour être bien certain que je ne me fourvoie pas en croyant avoir compris alors que non:
Toujours dans l'exemple de ipecho:
'(?<=is ).*(?=<\/h1>)' est une syntaxe dérivée du langage PERL.
Pour que grep la comprenne il faut lui mettre l'option -P.
Et pour qu'il n'affiche que la chaîne recherchée (entre is et </h1>) et non la totalité de la ligne qui est un truc du genre:
«<h1>Your IP is xxx.xxx.xxx.xxx</h1>» , il faut lui mettre l'option -o...
Du coup, je me demande si on ne pouvait pas utiliser grep -o -P dans le script de la température du GPU à la place de (n'importe) awk? Image
Le problème aurait été de savoir quoi mettre en "patern2" vu que dans ce cas le C (de Celsius) est la dernière lettre du résultat et qu'il faut quelle apparaisse...Image

Re: Son IP publique en une ligne de commande

Posté : dim. 17 juin 2018 11:15
par arghlub
alain a écrit :Du coup, je me demande si on ne pouvait pas utiliser grep -o -P dans le script de la température du GPU à la place de (n'importe) awk? Image
Le problème aurait été de savoir quoi mettre en "patern2" vu que dans ce cas le C (de Celsius) est la dernière lettre du résultat et qu'il faut quelle apparaisse...Image
Oui effectivement on aurait pu utiliser «grep -o» mais ça aurait été plus de bidouilles alors que awk qui est plus puissant fait ça (presque) tout seul.
Pour le "C" qui aurait disparu si on avait utiliser «grep -o», il aurait suffit de le rajouter. ;)

Re: Son IP publique en une ligne de commande

Posté : dim. 17 juin 2018 15:51
par kiri
...