Bonjour,
Je dois faire un mini exposé sur les regex. Ca m'interesserait de pouvoir donner des exemples sur les recherches dans les logs. Je cherche donc des cas d'usage, dans lesquels il faut utiliser des regex pour trouver ce qu'on veut. Les truc du genre " $grep Error access.log" me semblent inutile pour ce coup là :-) du fait de la trop facilité du pattern.
Le public: des sysadmins juniors *et* des devs web à qui on souhaite introduire à la recherche des erreurs dans les fichiers d'erreur (Apache, Tomcat, MySQL, PGSQL, Postfix, Exim,...)
Auriez-vous des cas d'usage (bonus: avec la résolution et un sample)?
Merci bien.
Bonjour Mihamina,
Peut-être que de jouer avec **logcheck** serait intéressant et concret (créer des règles personnalisées).
Sinon en bash ma préféré, mais c'est pour un fichier de conf :
Supprimer tous les commentaires & ligne vide d'un fichier : grep -E -v '''^(#|$|;)''' /etc/mysql/my.cnf Sympa à mettre en alias : alias nocomment='grep -E -v '''^(#|$|;)''''
Très bon site pour apprendre / tester des regex : https://www.regex101.com/
Belle journée,
Mihamina RAKOTOMANDIMBY mihamina.rakotomandimby@rktmb.org a écrit :
Bonjour,
Je dois faire un mini exposé sur les regex. Ca m'interesserait de pouvoir donner des exemples sur les recherches dans les logs. Je cherche donc des cas d'usage, dans lesquels il faut utiliser des regex pour trouver ce qu'on veut. Les truc du genre " $grep Error access.log" me semblent inutile pour ce coup là :-) du fait de la trop facilité du pattern.
Le public: des sysadmins juniors *et* des devs web à qui on souhaite introduire à la recherche des erreurs dans les fichiers d'erreur (Apache, Tomcat, MySQL, PGSQL, Postfix, Exim,...)
Auriez-vous des cas d'usage (bonus: avec la résolution et un sample)?
Merci bien.
Ne pas oublier de passer par la case : http://regexcrossword.com/ C'est pas la vrai vie mais c'est formateur :-)
A+ Sylvain
On Wed, 2015-02-11 at 08:29 +0300, Mihamina RAKOTOMANDIMBY wrote:
Bonjour,
Je dois faire un mini exposé sur les regex. Ca m'interesserait de pouvoir donner des exemples sur les recherches dans les logs. Je cherche donc des cas d'usage, dans lesquels il faut utiliser des regex pour trouver ce qu'on veut. Les truc du genre " $grep Error access.log" me semblent inutile pour ce coup là :-) du fait de la trop facilité du pattern.
Le public: des sysadmins juniors *et* des devs web à qui on souhaite introduire à la recherche des erreurs dans les fichiers d'erreur (Apache, Tomcat, MySQL, PGSQL, Postfix, Exim,...)
Auriez-vous des cas d'usage (bonus: avec la résolution et un sample)?
Merci bien.
Liste de diffusion du FRsAG http://www.frsag.org/
Le 11/02/2015 06:29, Mihamina RAKOTOMANDIMBY a écrit :
Bonjour,
Je dois faire un mini exposé sur les regex. Ca m'interesserait de pouvoir donner des exemples sur les recherches dans les logs. Je cherche donc des cas d'usage, dans lesquels il faut utiliser des regex pour trouver ce qu'on veut. Les truc du genre " $grep Error access.log" me semblent inutile pour ce coup là :-) du fait de la trop facilité du pattern.
Le public: des sysadmins juniors *et* des devs web à qui on souhaite introduire à la recherche des erreurs dans les fichiers d'erreur (Apache, Tomcat, MySQL, PGSQL, Postfix, Exim,...)
Auriez-vous des cas d'usage (bonus: avec la résolution et un sample)?
Il doit y avoir de quoi faire dans les filter de fail2ban non ?
Julien
Hello,
par exemple dans le cadre de la mise en place d’un SIEM, quand tu redirige des dizaines de flux syslog vers une unique machine dans le but de les traiter, pour faire de la simple remontée d’alertes, du thread intelligence, ou encore pour faire de la corrélation de logs… Il te faut des regex assez pointues sinon soit tu catch rien, soit tu catch n’importe quoi ou trop de choses (et donc tu pourris ta DB).
Ce que je veux catcher (proxy McAfee) :
Feb 10 09:20:27 Mcxxx mwg: [10/Feb/2015:09:20:10 +0100] "Mcxxx" "Florian" 10.1.1.1 188.40.1.1 "secure.eicar.org" 403 "-" 374 461 "GET https://secure.eicar.org/eicar_com.zip HTTP/1.1" "Information Security" "Minimal Risk" 7 "Gateway Anti-Malware/Block If Virus was Found" 80 "Malware found" true "McAfeeGW: EICAR test file" false "-" "-" "http://www.eicar.org/85-0-Download.html" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0"
Ma regex :
.*(?P<date>\w{3}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2})\s.*\s"(?P<username>.*)"\s+(?P<src_ip>[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})\s+(?P<dst_ip>[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})\s+"(?P<dst_site>.*)"\s\d{3}\s".*"\s\d{1,5}\s\d{1,4}\s"(?P<req_http>[A-Z]+\s+.*?)\s[A-Z]+.*Malware\s+found".*?"(?P<virus_desc>.*?)"\s.*?\s".*?"\s+".*?"\s+"(?P<http_ref>.*?)"\s+"(?P<browser>.*?)".*
Ma bible est https://www.regex101.com/, tu peux donc tester ma regex et voir ce que je récupère proprement ☺
Florian.
De : FRsAG [mailto:frsag-bounces@frsag.org] De la part de Mihamina RAKOTOMANDIMBY Envoyé : mercredi 11 février 2015 06:29 À : frsag@frsag.orgmailto:frsag@frsag.org Objet : [FRsAG] cherche cas usage des regex dans la vraie vie
Bonjour,
Je dois faire un mini exposé sur les regex. Ca m'interesserait de pouvoir donner des exemples sur les recherches dans les logs. Je cherche donc des cas d'usage, dans lesquels il faut utiliser des regex pour trouver ce qu'on veut. Les truc du genre " $grep Error access.log" me semblent inutile pour ce coup là :-) du fait de la trop facilité du pattern.
Le public: des sysadmins juniors *et* des devs web à qui on souhaite introduire à la recherche des erreurs dans les fichiers d'erreur (Apache, Tomcat, MySQL, PGSQL, Postfix, Exim,...)
Auriez-vous des cas d'usage (bonus: avec la résolution et un sample)?
Merci bien.
Salut,
Tu peux utiliser des exemples avec sed pour du rewrite, de l'ajout / suppression de contenu dans des fichiers texte. "sed, c'est bien."
Baptiste
Nice one :)
Le 11 février 2015 11:40, Florian Vanneroy Florian@dfi.ch a écrit :
Hello,
par exemple dans le cadre de la mise en place d’un SIEM, quand tu redirige des dizaines de flux syslog vers une unique machine dans le but de les traiter, pour faire de la simple remontée d’alertes, du thread intelligence, ou encore pour faire de la corrélation de logs… Il te faut des regex assez pointues sinon soit tu catch rien, soit tu catch n’importe quoi ou trop de choses (et donc tu pourris ta DB).
Ce que je veux catcher (proxy McAfee) :
Feb 10 09:20:27 Mcxxx mwg: [10/Feb/2015:09:20:10 +0100] "Mcxxx" "Florian" 10.1.1.1 188.40.1.1 "secure.eicar.org" 403 "-" 374 461 "GET https://secure.eicar.org/eicar_com.zip HTTP/1.1" "Information Security" "Minimal Risk" 7 "Gateway Anti-Malware/Block If Virus was Found" 80 "Malware found" true "McAfeeGW: EICAR test file" false "-" "-" " http://www.eicar.org/85-0-Download.html" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0"
Ma regex :
.*(?P<date>\w{3}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2})\s.*\s"(?P<username>.*)"\s+(?P<src_ip>[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})\s+(?P<dst_ip>[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})\s+"(?P<dst_site>.*)"\s\d{3}\s".*"\s\d{1,5}\s\d{1,4}\s"(?P<req_http>[A-Z]+\s+.*?)\s[A-Z]+.*Malware\s+found".*?"(?P<virus_desc>.*?)"\s.*?\s".*?"\s+".*?"\s+"(?P<http_ref>.*?)"\s+"(?P<browser>.*?)".*
Ma bible est https://www.regex101.com/, tu peux donc tester ma regex et voir ce que je récupère proprement J
Florian.
*De :* FRsAG [mailto:frsag-bounces@frsag.org frsag-bounces@frsag.org] *De la part de* Mihamina RAKOTOMANDIMBY *Envoyé :* mercredi 11 février 2015 06:29 *À :* frsag@frsag.org *Objet :* [FRsAG] cherche cas usage des regex dans la vraie vie
Bonjour,
Je dois faire un mini exposé sur les regex. Ca m'interesserait de pouvoir donner des exemples sur les recherches dans les logs. Je cherche donc des cas d'usage, dans lesquels il faut utiliser des regex pour trouver ce qu'on veut. Les truc du genre " $grep Error access.log" me semblent inutile pour ce coup là :-) du fait de la trop facilité du pattern.
Le public: des sysadmins juniors *et* des devs web à qui on souhaite introduire à la recherche des erreurs dans les fichiers d'erreur (Apache, Tomcat, MySQL, PGSQL, Postfix, Exim,...)
Auriez-vous des cas d'usage (bonus: avec la résolution et un sample)?
Merci bien.
Liste de diffusion du FRsAG http://www.frsag.org/
extraction d'ip depuis ifconfig, infos depuis dmidecode, ...
Fait leur faire un script de collecte d'info système, c'est utile et ils vont en bouffer de la regexp
Cordialement Alexis Lameire
Le 11 février 2015 11:47, RegisM regis.frsag@tornad.net a écrit :
Nice one :)
Le 11 février 2015 11:40, Florian Vanneroy Florian@dfi.ch a écrit :
Hello,
par exemple dans le cadre de la mise en place d’un SIEM, quand tu redirige des dizaines de flux syslog vers une unique machine dans le but de les traiter, pour faire de la simple remontée d’alertes, du thread intelligence, ou encore pour faire de la corrélation de logs… Il te faut des regex assez pointues sinon soit tu catch rien, soit tu catch n’importe quoi ou trop de choses (et donc tu pourris ta DB).
Ce que je veux catcher (proxy McAfee) :
Feb 10 09:20:27 Mcxxx mwg: [10/Feb/2015:09:20:10 +0100] "Mcxxx" "Florian" 10.1.1.1 188.40.1.1 "secure.eicar.org" 403 "-" 374 461 "GET https://secure.eicar.org/eicar_com.zip HTTP/1.1" "Information Security" "Minimal Risk" 7 "Gateway Anti-Malware/Block If Virus was Found" 80 "Malware found" true "McAfeeGW: EICAR test file" false "-" "-" "http://www.eicar.org/85-0-Download.html" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0"
Ma regex :
.*(?P<date>\w{3}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2})\s.*\s"(?P<username>.*)"\s+(?P<src_ip>[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})\s+(?P<dst_ip>[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})\s+"(?P<dst_site>.*)"\s\d{3}\s".*"\s\d{1,5}\s\d{1,4}\s"(?P<req_http>[A-Z]+\s+.*?)\s[A-Z]+.*Malware\s+found".*?"(?P<virus_desc>.*?)"\s.*?\s".*?"\s+".*?"\s+"(?P<http_ref>.*?)"\s+"(?P<browser>.*?)".*
Ma bible est https://www.regex101.com/, tu peux donc tester ma regex et voir ce que je récupère proprement J
Florian.
De : FRsAG [mailto:frsag-bounces@frsag.org] De la part de Mihamina RAKOTOMANDIMBY Envoyé : mercredi 11 février 2015 06:29 À : frsag@frsag.org Objet : [FRsAG] cherche cas usage des regex dans la vraie vie
Bonjour,
Je dois faire un mini exposé sur les regex. Ca m'interesserait de pouvoir donner des exemples sur les recherches dans les logs. Je cherche donc des cas d'usage, dans lesquels il faut utiliser des regex pour trouver ce qu'on veut. Les truc du genre " $grep Error access.log" me semblent inutile pour ce coup là :-) du fait de la trop facilité du pattern.
Le public: des sysadmins juniors *et* des devs web à qui on souhaite introduire à la recherche des erreurs dans les fichiers d'erreur (Apache, Tomcat, MySQL, PGSQL, Postfix, Exim,...)
Auriez-vous des cas d'usage (bonus: avec la résolution et un sample)?
Merci bien.
Liste de diffusion du FRsAG http://www.frsag.org/
Liste de diffusion du FRsAG http://www.frsag.org/
Si tu veux bien leur casser la tête, tu peux leur montrer l'astuce en perl pour récupérer ce qu'il y a entre deux bidules : if (/pattern1/ .. /pattern2/) {
}
-- Benjamin -
Le 11 février 2015 12:17, Mihamina RAKOTOMANDIMBY < mihamina.rakotomandimby@rktmb.org> a écrit :
On 02/11/2015 01:53 PM, Alexis Lameire wrote:
extraction d'ip depuis ifconfig, infos depuis dmidecode, ...
Bien vu ;-) Merci à toi et bien évidemment à *tous*
Liste de diffusion du FRsAG http://www.frsag.org/
pas besoin de perl pour matcher entre deux pattern: il y a awk ! Avec un format "/pattern/,/pattern/ {actions}" - ou plus simplement "/pattern/ {actions}" - on peut en faire des choses (et des nœuds aux neurones quand on voit le nombre d'actions possibles ! ) .... Pas d'exemple sous la main, désolé.
Fabrice
Le 11/02/2015 19:41, Benjamin BILLON a écrit :
Si tu veux bien leur casser la tête, tu peux leur montrer l'astuce en perl pour récupérer ce qu'il y a entre deux bidules : if (/pattern1/ .. /pattern2/) {
}
-- Benjamin
Le 11 février 2015 12:17, Mihamina RAKOTOMANDIMBY <mihamina.rakotomandimby@rktmb.org mailto:mihamina.rakotomandimby@rktmb.org> a écrit :
On 02/11/2015 01:53 PM, Alexis Lameire wrote: extraction d'ip depuis ifconfig, infos depuis dmidecode, ... Bien vu ;-) Merci à toi et bien évidemment à *tous* _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
Liste de diffusion du FRsAG http://www.frsag.org/
Il y a aussi sed. Un exemple concret, afficher uniquement un intervalle de lignes retournées par la console bacula :
echo "status dir" | bconsole | sed -ne '/^Running/,/^Terminated/p'
Cette commande n'affiche que ce qui se trouve entre la ligne commençant par "Running" et la ligne commençant par "Terminated".
On 13/02/2015 14:02, Fabrice Vincent wrote:
pas besoin de perl pour matcher entre deux pattern: il y a awk ! Avec un format "/pattern/,/pattern/ {actions}" - ou plus simplement "/pattern/ {actions}" - on peut en faire des choses (et des nœuds aux neurones quand on voit le nombre d'actions possibles ! ) .... Pas d'exemple sous la main, désolé.
Fabrice
Le 11/02/2015 19:41, Benjamin BILLON a écrit :
Si tu veux bien leur casser la tête, tu peux leur montrer l'astuce en perl pour récupérer ce qu'il y a entre deux bidules : if (/pattern1/ .. /pattern2/) {
}
-- Benjamin
Le 11 février 2015 12:17, Mihamina RAKOTOMANDIMBY <mihamina.rakotomandimby@rktmb.org mailto:mihamina.rakotomandimby@rktmb.org> a écrit :
On 02/11/2015 01:53 PM, Alexis Lameire wrote: extraction d'ip depuis ifconfig, infos depuis dmidecode, ... Bien vu ;-) Merci à toi et bien évidemment à *tous*
Salut,
Il y a grok et logstash qui utilisent des regexp pour extaire les champs des entrées de log.
Voir patterns/grok-patterns dans logstash et patterns/base dans grok.
un grep en poupee russe, un grep pour lier tous les grep de frsag :
neofutur@gabrielle ~/irclogs/freenode $ cat #frsag.log | grep grep 2014-12-01 16:44< Kuri> sinon greppez sur peck :) 2014-12-01 19:51< ne0futur> grep -v rootfs /proc/mounts > /etc/mtab 2014-12-03 13:19< HeisSpiter> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=578595#10 2014-12-04 13:59< ne0futur> peut etre https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=764298 2014-12-04 14:25< ne0futur> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760947 2014-12-09 09:27<@gregorg> tu peux pas grepper ? 2014-12-10 11:50 * merlin8282 greppe dans ses logs irssi ^^ 2014-12-16 10:21< krion> # ip a|grep inet|wc -l 2014-12-17 09:13<@hanx_> $ free -m | grep -i swap 2014-12-20 15:23< sebbu2> lspci -v | grep -EA10 "3D|VGA" | grep -i prefetch 2014-12-30 11:39< hanx_> $ grep 'model name' /proc/cpuinfo | uniq 2014-12-31 15:42<@hanx_> root@myserver:/home/vagrant{1}# locate zfs | grep ko 2015-01-02 10:43< krion> # grep -i pirate /data/logs/apache2/customer-access.log|wc -l 2015-01-05 10:03< krion> # zgrep thepiratebay /data/logs/apache2/customer-access.log.2.gz|awk '{print $2}'|sort -r|uniq -c|wc -l 2015-01-05 10:05< krion> et grep le netname 2015-01-05 12:46< krion> # iptables -n -L fail2ban-HTTP|grep -c DROP 2015-01-05 12:53< krion> # iptables -n -L fail2ban-HTTP|grep -c DROP 2015-01-05 15:59< krion> # iptables -n -L fail2ban-HTTP|grep -c DROP 2015-01-07 15:58< HeisSpiter> pgrep merlin8282 | xargs kill -9 2015-01-07 16:41< krion> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%23745272 2015-01-08 11:29< krion> ip route|grep -i blackhole|wc -l 2015-01-08 15:11< krion> # ip route |grep -c blackhole 2015-01-08 15:48<@gregorg> curl -sI http://www.charliehebdo.fr/ | grep X 2015-01-08 17:27< ne0futur> mais blueness me dit que pipacs jettera un oeil si j ouvre un bugreport alors je me gene pas 2015-01-08 17:35< ne0futur> puis tail -f ou cat | grep le file 2015-01-08 17:36< ne0futur> cat dumpflooddhcp6-3 | grep 17:08:04 | grep 0x86dd | wc -l 2015-01-19 13:39<@gregorg> dpkg -l | grep '^rc' | awk '{print $2}' | xargs dpkg --purge 2015-01-19 15:44<@hanx_> T0aD: netstat -nlapute | grep ESTABLISHED | wc -l 2015-01-19 15:44< T0aD> root@m1:~# netstat -nlapute | grep ESTABLISH | wc -l 2015-01-28 16:07< T0aD> string /lib/libc.so | grep version 2015-01-28 16:46<@hanx_> gregorg: je viens de faire un grep, il y a rien comme ini_set concernant les sessions dans wordpress 2015-02-05 12:35< krion> # ansible-doc -l|grep -i iptables 2015-02-05 14:18< merlin8282> grep -c "Too many open files" /var/log/php5-fpm.log <------ me donne ~ 1500 par machine, sauf une où c'est 0 2015-02-05 14:36< olc> `cat /proc/<pid_de_nginx>/limits | grep 'open files'` te donne les m�me valeurs sur les diff�rents serveurs ? 2015-02-05 14:45< Kioob`Taff> genre truc de grand mère : pgrep php5-fpm | xargs -r renice -n 1 -p 2015-02-06 16:24<@gregorg> env | grep ANSIBLE 2015-02-10 12:26< krion> grep foireux
je peu faire de meme sur des logs d autres channels si tu en veux beaucoup plus, j ai des logs irc depuis 2001 :p
2015-02-11 14:22 GMT-05:00 Gabriel Corona gabriel.corona@enst-bretagne.fr:
Salut,
Il y a grok et logstash qui utilisent des regexp pour extaire les champs des entrées de log.
Voir patterns/grok-patterns dans logstash et patterns/base dans grok.
-- Gabriel
Liste de diffusion du FRsAG http://www.frsag.org/
bon voila un fichier avec quelques centaines de grep: http://xena.ww7.be/grep_list.txt
a toi de faire le tri je n ai fait qu un petit filtre genre cat grep_list.txt | grep -v "grep for" | grep -v "grep on" | grep -v binaire >grep_list.txt
( ne pas oublier l utilite du grep -v ! )
2015-02-11 20:05 GMT-05:00 neo futur frsag@ww7.be:
un grep en poupee russe, un grep pour lier tous les grep de frsag :
neofutur@gabrielle ~/irclogs/freenode $ cat #frsag.log | grep grep 2014-12-01 16:44< Kuri> sinon greppez sur peck :) 2014-12-01 19:51< ne0futur> grep -v rootfs /proc/mounts > /etc/mtab 2014-12-03 13:19< HeisSpiter> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=578595#10 2014-12-04 13:59< ne0futur> peut etre https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=764298 2014-12-04 14:25< ne0futur> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760947 2014-12-09 09:27<@gregorg> tu peux pas grepper ? 2014-12-10 11:50 * merlin8282 greppe dans ses logs irssi ^^ 2014-12-16 10:21< krion> # ip a|grep inet|wc -l 2014-12-17 09:13<@hanx_> $ free -m | grep -i swap 2014-12-20 15:23< sebbu2> lspci -v | grep -EA10 "3D|VGA" | grep -i prefetch 2014-12-30 11:39< hanx_> $ grep 'model name' /proc/cpuinfo | uniq 2014-12-31 15:42<@hanx_> root@myserver:/home/vagrant{1}# locate zfs | grep ko 2015-01-02 10:43< krion> # grep -i pirate /data/logs/apache2/customer-access.log|wc -l 2015-01-05 10:03< krion> # zgrep thepiratebay /data/logs/apache2/customer-access.log.2.gz|awk '{print $2}'|sort -r|uniq -c|wc -l 2015-01-05 10:05< krion> et grep le netname 2015-01-05 12:46< krion> # iptables -n -L fail2ban-HTTP|grep -c DROP 2015-01-05 12:53< krion> # iptables -n -L fail2ban-HTTP|grep -c DROP 2015-01-05 15:59< krion> # iptables -n -L fail2ban-HTTP|grep -c DROP 2015-01-07 15:58< HeisSpiter> pgrep merlin8282 | xargs kill -9 2015-01-07 16:41< krion> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%23745272 2015-01-08 11:29< krion> ip route|grep -i blackhole|wc -l 2015-01-08 15:11< krion> # ip route |grep -c blackhole 2015-01-08 15:48<@gregorg> curl -sI http://www.charliehebdo.fr/ | grep X 2015-01-08 17:27< ne0futur> mais blueness me dit que pipacs jettera un oeil si j ouvre un bugreport alors je me gene pas 2015-01-08 17:35< ne0futur> puis tail -f ou cat | grep le file 2015-01-08 17:36< ne0futur> cat dumpflooddhcp6-3 | grep 17:08:04 | grep 0x86dd | wc -l 2015-01-19 13:39<@gregorg> dpkg -l | grep '^rc' | awk '{print $2}' | xargs dpkg --purge 2015-01-19 15:44<@hanx_> T0aD: netstat -nlapute | grep ESTABLISHED | wc -l 2015-01-19 15:44< T0aD> root@m1:~# netstat -nlapute | grep ESTABLISH | wc -l 2015-01-28 16:07< T0aD> string /lib/libc.so | grep version 2015-01-28 16:46<@hanx_> gregorg: je viens de faire un grep, il y a rien comme ini_set concernant les sessions dans wordpress 2015-02-05 12:35< krion> # ansible-doc -l|grep -i iptables 2015-02-05 14:18< merlin8282> grep -c "Too many open files" /var/log/php5-fpm.log <------ me donne ~ 1500 par machine, sauf une où c'est 0 2015-02-05 14:36< olc> `cat /proc/<pid_de_nginx>/limits | grep 'open files'` te donne les m�me valeurs sur les diff�rents serveurs ? 2015-02-05 14:45< Kioob`Taff> genre truc de grand mère : pgrep php5-fpm | xargs -r renice -n 1 -p 2015-02-06 16:24<@gregorg> env | grep ANSIBLE 2015-02-10 12:26< krion> grep foireux
je peu faire de meme sur des logs d autres channels si tu en veux beaucoup plus, j ai des logs irc depuis 2001 :p
2015-02-11 14:22 GMT-05:00 Gabriel Corona gabriel.corona@enst-bretagne.fr:
Salut,
Il y a grok et logstash qui utilisent des regexp pour extaire les champs des entrées de log.
Voir patterns/grok-patterns dans logstash et patterns/base dans grok.
-- Gabriel
Liste de diffusion du FRsAG http://www.frsag.org/
L'utilisation correcte de grep dans le cas d'une recherche dans un fichier est de passer le fichier à traiter en dernier argument. Il est rare qu'il faille utiliser "cat fichier |outil" ; dans la majeur partie des cas, soit l'outil accepte directement en argument de lire un fichier (comme grep, sed ou perl par exemple), soit un "outil -options < fichier". Dans le cas présent : grep 'grep' #frsag.log
Le 12/02/2015 02:05, neo futur a écrit :
un grep en poupee russe, un grep pour lier tous les grep de frsag :
neofutur@gabrielle ~/irclogs/freenode $ cat #frsag.log | grep grep [...]
je peu faire de meme sur des logs d autres channels si tu en veux beaucoup plus, j ai des logs irc depuis 2001 :p
Et si tu à plusieurs recherches à exclure, selon le deuxième exemple (qui n’a pas de sens d'ailleurs, aucune ligne n'étant exclue) : grep -ve 'grep for' -ve 'grep on' -ve 'binaire' grep_list.txt Ou en utilisant des expressions régulières pour éviter d'avoir à chainer plusieurs -e ("grep -E" ou "egrep") : grep -Ev 'grep (for|on)|binaire' grep_list.txt
A noter également que "cat fichier |cequetuveux >fichier" ne fonctionnera pas et que tu te retrouvera avec un fichier vide.
Le 12/02/2015 02:18, neo futur a écrit :
bon voila un fichier avec quelques centaines de grep: http://xena.ww7.be/grep_list.txt
a toi de faire le tri je n ai fait qu un petit filtre genre cat grep_list.txt | grep -v "grep for" | grep -v "grep on" | grep -v binaire >grep_list.txt
( ne pas oublier l utilite du grep -v ! )
Autant que possible, éviter de récupérer les infos sur la sortie d'outils qui traient déjà les données brutes pour les afficher de manière "humainement lisible", donc plutôt que récupérer et grepper "ifconfig", récupérer et traiter les infos sur "/proc/net/dev" (ou ailleurs en fonction de ce que l'on recherche) sera plus propre et on évitera un risque d'avoir son script qui ne fonctionne plus si "ifconfig" change la manière sont ses infos sont affichées ou si par exemple un changement de locale changeais l’ordre/formatage des infos alors que la sortie des "fichiers" dans /proc sera toujours formatée de la même manière, les potentielles nouvelles informations seront seulement rajoutées sur de nouvelles colonnes après l'existant.
Le 11/02/2015 11:53, Alexis Lameire a écrit :
extraction d'ip depuis ifconfig, infos depuis dmidecode, ...
Fait leur faire un script de collecte d'info système, c'est utile et ils vont en bouffer de la regexp
ah j ai retrouve ce qui sera ton saint graal de la regexp :
http://www.commandlinefu.com/commands/tagged/351/regex
http://www.commandlinefu.com/commands/tagged/2323/regexp
je savai bien que je pourrai faire mieux que mon bete grep qui au final trouve beaucoup de grep mais peu de regexp ;)
2015-02-11 20:38 GMT-05:00 Jean Weisbuch jean@plusquenet.net:
L'utilisation correcte de grep dans le cas d'une recherche dans un fichier est de passer le fichier à traiter en dernier argument. Il est rare qu'il faille utiliser "cat fichier |outil" ; dans la majeur partie des cas, soit l'outil accepte directement en argument de lire un fichier (comme grep, sed ou perl par exemple), soit un "outil -options < fichier". Dans le cas présent : grep 'grep' #frsag.log
Le 12/02/2015 02:05, neo futur a écrit :
un grep en poupee russe, un grep pour lier tous les grep de frsag :
neofutur@gabrielle ~/irclogs/freenode $ cat #frsag.log | grep grep [...]
je peu faire de meme sur des logs d autres channels si tu en veux beaucoup plus, j ai des logs irc depuis 2001 :p
Et si tu à plusieurs recherches à exclure, selon le deuxième exemple (qui n’a pas de sens d'ailleurs, aucune ligne n'étant exclue) : grep -ve 'grep for' -ve 'grep on' -ve 'binaire' grep_list.txt Ou en utilisant des expressions régulières pour éviter d'avoir à chainer plusieurs -e ("grep -E" ou "egrep") : grep -Ev 'grep (for|on)|binaire' grep_list.txt
A noter également que "cat fichier |cequetuveux >fichier" ne fonctionnera pas et que tu te retrouvera avec un fichier vide.
Le 12/02/2015 02:18, neo futur a écrit :
bon voila un fichier avec quelques centaines de grep: http://xena.ww7.be/grep_list.txt
a toi de faire le tri je n ai fait qu un petit filtre genre cat grep_list.txt | grep -v "grep for" | grep -v "grep on" | grep -v binaire >grep_list.txt
( ne pas oublier l utilite du grep -v ! )
Autant que possible, éviter de récupérer les infos sur la sortie d'outils qui traient déjà les données brutes pour les afficher de manière "humainement lisible", donc plutôt que récupérer et grepper "ifconfig", récupérer et traiter les infos sur "/proc/net/dev" (ou ailleurs en fonction de ce que l'on recherche) sera plus propre et on évitera un risque d'avoir son script qui ne fonctionne plus si "ifconfig" change la manière sont ses infos sont affichées ou si par exemple un changement de locale changeais l’ordre/formatage des infos alors que la sortie des "fichiers" dans /proc sera toujours formatée de la même manière, les potentielles nouvelles informations seront seulement rajoutées sur de nouvelles colonnes après l'existant.
Le 11/02/2015 11:53, Alexis Lameire a écrit :
extraction d'ip depuis ifconfig, infos depuis dmidecode, ...
Fait leur faire un script de collecte d'info système, c'est utile et ils vont en bouffer de la regexp
Liste de diffusion du FRsAG http://www.frsag.org/
encore quelques unes : un petit grep "^" * | grep "|" | grep "sed" >reg1.txt
m a trouve quelques bonnes regexp : http://xena.ww7.be/reg1.txt
2015-02-11 20:43 GMT-05:00 neo futur frsag@ww7.be:
ah j ai retrouve ce qui sera ton saint graal de la regexp :
http://www.commandlinefu.com/commands/tagged/351/regex
http://www.commandlinefu.com/commands/tagged/2323/regexp
je savai bien que je pourrai faire mieux que mon bete grep qui au final trouve beaucoup de grep mais peu de regexp ;)
2015-02-11 20:38 GMT-05:00 Jean Weisbuch jean@plusquenet.net:
L'utilisation correcte de grep dans le cas d'une recherche dans un fichier est de passer le fichier à traiter en dernier argument. Il est rare qu'il faille utiliser "cat fichier |outil" ; dans la majeur partie des cas, soit l'outil accepte directement en argument de lire un fichier (comme grep, sed ou perl par exemple), soit un "outil -options < fichier". Dans le cas présent : grep 'grep' #frsag.log
Le 12/02/2015 02:05, neo futur a écrit :
un grep en poupee russe, un grep pour lier tous les grep de frsag :
neofutur@gabrielle ~/irclogs/freenode $ cat #frsag.log | grep grep [...]
je peu faire de meme sur des logs d autres channels si tu en veux beaucoup plus, j ai des logs irc depuis 2001 :p
Et si tu à plusieurs recherches à exclure, selon le deuxième exemple (qui n’a pas de sens d'ailleurs, aucune ligne n'étant exclue) : grep -ve 'grep for' -ve 'grep on' -ve 'binaire' grep_list.txt Ou en utilisant des expressions régulières pour éviter d'avoir à chainer plusieurs -e ("grep -E" ou "egrep") : grep -Ev 'grep (for|on)|binaire' grep_list.txt
A noter également que "cat fichier |cequetuveux >fichier" ne fonctionnera pas et que tu te retrouvera avec un fichier vide.
Le 12/02/2015 02:18, neo futur a écrit :
bon voila un fichier avec quelques centaines de grep: http://xena.ww7.be/grep_list.txt
a toi de faire le tri je n ai fait qu un petit filtre genre cat grep_list.txt | grep -v "grep for" | grep -v "grep on" | grep -v binaire >grep_list.txt
( ne pas oublier l utilite du grep -v ! )
Autant que possible, éviter de récupérer les infos sur la sortie d'outils qui traient déjà les données brutes pour les afficher de manière "humainement lisible", donc plutôt que récupérer et grepper "ifconfig", récupérer et traiter les infos sur "/proc/net/dev" (ou ailleurs en fonction de ce que l'on recherche) sera plus propre et on évitera un risque d'avoir son script qui ne fonctionne plus si "ifconfig" change la manière sont ses infos sont affichées ou si par exemple un changement de locale changeais l’ordre/formatage des infos alors que la sortie des "fichiers" dans /proc sera toujours formatée de la même manière, les potentielles nouvelles informations seront seulement rajoutées sur de nouvelles colonnes après l'existant.
Le 11/02/2015 11:53, Alexis Lameire a écrit :
extraction d'ip depuis ifconfig, infos depuis dmidecode, ...
Fait leur faire un script de collecte d'info système, c'est utile et ils vont en bouffer de la regexp
Liste de diffusion du FRsAG http://www.frsag.org/
On 12/02/2015 02:43, neo futur wrote:
ah j ai retrouve ce qui sera ton saint graal de la regexp :
http://www.commandlinefu.com/commands/tagged/351/regex
http://www.commandlinefu.com/commands/tagged/2323/regexp
je savai bien que je pourrai faire mieux que mon bete grep qui au final trouve beaucoup de grep mais peu de regexp ;)
Le saint Graal de la regex se trouve ici : http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
Cela permet de vérifier qu'une adresse mail est valide. Peu utile pour les adminSys, certes, mais les dév web pourront en prendre de la graine (et comprendre leur douleur face à leur /^[^@]+@.+...+$/).
Pas un exemple de regex en lui même, mais plutôt un exemple d'utilisation :Lorsque tu fais une procédure d'installation / configuration, à la place de marquer "aller dans le fichier machin et modifier la valeur truc par machin", tu fais directement la commande qui va bien, genre :sed -i 's/default/monUser/g' monFichier.conf (Bien sûr, c'est si tu réalise une procédure que tu veux réutiliser en copier-coller) Cordialement,Arnaud
Date: Thu, 12 Feb 2015 10:10:15 +0100 From: luc@didry.org To: frsag@ww7.be; jean@plusquenet.net CC: frsag@frsag.org Subject: Re: [FRsAG] cherche cas usage des regex dans la vraie vie
On 12/02/2015 02:43, neo futur wrote:
ah j ai retrouve ce qui sera ton saint graal de la regexp :
http://www.commandlinefu.com/commands/tagged/351/regex
http://www.commandlinefu.com/commands/tagged/2323/regexp
je savai bien que je pourrai faire mieux que mon bete grep qui au final trouve beaucoup de grep mais peu de regexp ;)
Le saint Graal de la regex se trouve ici : http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
Cela permet de vérifier qu'une adresse mail est valide. Peu utile pour les adminSys, certes, mais les dév web pourront en prendre de la graine (et comprendre leur douleur face à leur /^[^@]+@.+...+$/).
Le Thu, Feb 12, 2015 at 10:10:15AM +0100, Luc Didry a écrit:
Le saint Graal de la regex se trouve ici : http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
Je n'ai pas vérifié, mais est ce que ça couvre aussi les cas modernes avec des domaines et emails IDN ?
Du style "gérard@àlacon.paris" ?
Arnaud.
Bonjour,
J'utilise de temps à autres des regex pour traiter automatiquement des sites Web afin d'en extraire une ressource (image, vidéo..)
Passé un temps j'avais un script qui mettait automatiquement l'image du jour de http://apod.nasa.gov/apod/astropix.html en fond d'écran. wget, et une bonne dose de regexp.
Rémi.
Le 14/02/2015, Arnaud Launayasl@launay.org a écrit :
Le Thu, Feb 12, 2015 at 10:10:15AM +0100, Luc Didry a écrit:
Le saint Graal de la regex se trouve ici : http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
Je n'ai pas vérifié, mais est ce que ça couvre aussi les cas modernes avec des domaines et emails IDN ?
Du style "gérard@àlacon.paris" ?
Arnaud. _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
Les /regexp?/ sont un des outils principaux des sysadmins *nix, c'est un sujet sans fin. On les utilise depuis les débuts d'Unix grâce à sa philosophie du tout est fichier. Et les nouveaux outils comme Ansible, Docker, et autres continuent de les implémenter, quand c'est pas le 1er module/plugin créé ...
Il suffit de commencer à faire quelque chose avec un serveur tout en connaissant cet outil, pour l'utiliser. C'est un outil de pre-setup (comme le partitionnement), de setup, de déploiement, de debug, d'analyse, ... et quand on n'a pas besoin de calculs distribués, c'est même un outil plus performant que n'importe quelle techno "big data".
C'est la 2ème question que je pose à un entretien d'embauche pour un sysadmin, et elle est éliminatoire. Ca devrait être une partie importante du programme, car indispensable. A défaut, c'est une excellente idée que de faire un exposé sur ce sujet, alors fais le bien, il pourrait être déterminant pour certains ;)
Greg
Le 14 février 2015 13:06, Rémi Bouhl remibouhl@gmail.com a écrit :
Bonjour,
J'utilise de temps à autres des regex pour traiter automatiquement des sites Web afin d'en extraire une ressource (image, vidéo..)
Passé un temps j'avais un script qui mettait automatiquement l'image du jour de http://apod.nasa.gov/apod/astropix.html en fond d'écran. wget, et une bonne dose de regexp.
Rémi.
Le 14/02/2015, Arnaud Launayasl@launay.org a écrit :
Le Thu, Feb 12, 2015 at 10:10:15AM +0100, Luc Didry a écrit:
Le saint Graal de la regex se trouve ici : http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
Je n'ai pas vérifié, mais est ce que ça couvre aussi les cas modernes avec des domaines et emails IDN ?
Du style "gérard@àlacon.paris" ?
Arnaud.
Liste de diffusion du FRsAG http://www.frsag.org/
Liste de diffusion du FRsAG http://www.frsag.org/
2015-02-14 5:33 GMT-05:00 Arnaud Launay asl@launay.org:
Le Thu, Feb 12, 2015 at 10:10:15AM +0100, Luc Didry a écrit:
Le saint Graal de la regex se trouve ici : http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
perso pour les emails je prefere celle la, un peu plus courte et qui fonctionne bien jusqu ici :
function is_valid_email($email) { return preg_match('/^(([^<>()[]\.,;:\s@"']+(.[^<>()[]\.,;:\s@"']+)*)|("[^"']+"))@(([\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}])|(([a-zA-Z\d-]+.)+[a-zA-Z]{2,}))$/', $email); }
Je n'ai pas vérifié, mais est ce que ça couvre aussi les cas modernes avec des domaines et emails IDN ?
Du style "gérard@àlacon.paris" ?
grrrr je hais les accents
On 02/15/2015 04:12 AM, neo futur wrote:
perso pour les emails je prefere celle la, un peu plus courte et qui fonctionne bien jusqu ici :
function is_valid_email($email) { return preg_match('/^(([^<>()[]\.,;:\s@"']+(.[^<>()[]\.,;:\s@"']+)*)|("[^"']+"))@(([\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}])|(([a-zA-Z\d-]+.)+[a-zA-Z]{2,}))$/', $email); }
Moi je lis la doc. http://php.net/filter_var et http://php.net/manual/fr/filter.filters.validate.php
L'utilisation correcte de grep dans le cas d'une recherche dans un fichier est de passer le fichier à traiter en dernier argument. Il est rare qu'il faille utiliser "cat fichier |outil" ; dans la majeur partie des cas, soit l'outil accepte directement en argument de lire un fichier (comme grep, sed ou perl par exemple), soit un "outil -options < fichier".
desole j ai appris ce genre de trucs il y a 15 ans a une epoque ou il fallait etre posix et faire en sorte que tout ca fonctionne sur un vieux solaris ou autre unix basique qui n a pas toutes les options modernes ( et souvent pas posix) des outils linux/gnu.
quand a :
selon le deuxième exemple (qui n’a pas de sens d'ailleurs, aucune ligne n'étant exclue) :
desole mais ca m a tres bien filtre ce que je voulai filtrer.
tu as raison pour l elegance, mais j aime bien faire simple et rapide, avec plein de pipe, ca ne me gene pas de faire travailler mon cpu si moi je peux glander en attendant les resultats ;)
de plus je reste completment fan de la vieille philosophie unix de petites briques simples qui peuvent s imbriquer avec des pipes ;)
https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patte...
Mihamina RAKOTOMANDIMBY a écrit :
Bonjour,
Je dois faire un mini exposé sur les regex. Ca m'interesserait de pouvoir donner des exemples sur les recherches dans les logs. Je cherche donc des cas d'usage, dans lesquels il faut utiliser des regex pour trouver ce qu'on veut. Les truc du genre " $grep Error access.log" me semblent inutile pour ce coup là :-) du fait de la trop facilité du pattern.
Le public: des sysadmins juniors *et* des devs web à qui on souhaite introduire à la recherche des erreurs dans les fichiers d'erreur (Apache, Tomcat, MySQL, PGSQL, Postfix, Exim,...)
Auriez-vous des cas d'usage (bonus: avec la résolution et un sample)?
Merci bien.
Liste de diffusion du FRsAG http://www.frsag.org/
Hello,
Je suis sysadmin et je note pas mal de mes commandes "cas concret" sur mon site: https://jeznet.org/Wiki/CodeSnippets (tu ctrl+F 'grep' dans la page, pour arriver sur les sections interressantes). De manière générale: https://jeznet.org/?n=Wiki.HomePage&action=search&q=grep Plus que la beauté des commandes, tu trouvera des cas concrets. Dans le cas de mon shell, je pousse mes Regex dans des variables, pour les réutiliser avec grep/sed: https://github.com/mrjk/linux-personal-env/blob/master/bash/bash.bashrc (fonction shell_global_variable)
Note 1: Pas mal de ces commandes pourraient être optimisées, mais par exemple je préfère piper plusieurs grep simple qu'un gros grep avec une expression de bourrin. Question de réusabilité. Note 2: Désolé pour la pub ? :/ -- MrJK
Le 11 février 2015 06:29, Mihamina RAKOTOMANDIMBY mihamina.rakotomandimby@rktmb.org a écrit :
Bonjour,
Je dois faire un mini exposé sur les regex. Ca m'interesserait de pouvoir donner des exemples sur les recherches dans les logs. Je cherche donc des cas d'usage, dans lesquels il faut utiliser des regex pour trouver ce qu'on veut. Les truc du genre " $grep Error access.log" me semblent inutile pour ce coup là :-) du fait de la trop facilité du pattern.
Le public: des sysadmins juniors *et* des devs web à qui on souhaite introduire à la recherche des erreurs dans les fichiers d'erreur (Apache, Tomcat, MySQL, PGSQL, Postfix, Exim,...)
Auriez-vous des cas d'usage (bonus: avec la résolution et un sample)?
Merci bien.
Liste de diffusion du FRsAG http://www.frsag.org/