Info2Geek

GREP – Globally search for Regular Expression and Print it

Qui, travaillant sous Unix ou Linux, n’a jamais utilisé la commande grep? La réponse est simple il me semble: personne!!!
Pour faire simple, grep est une petite famille de 3 commandes qui permet de rechercher une chaine dans des fichiers, et d’en imprimer les lignes.
Elle n’a l’air de rien comme cela, mais c’est une commande terriblement efficace, l’une des commandes les plus utiles dans tout système Unix, avec sed et awk.

Présentation

g/RE/p signifie globally search for RE and print it où RE est un raccourci pour RegularExpression.
Pour faire ultra simple, grep est un outil qui permet de chercher une expression régulière (motif ou pattern en anglais) dans un contenu, et d’en afficher le résultat.

Expression régulière ?

Les expressions régulières, ou plus communément appelées RegEx, constituent un système puissant et rapide afin de rechercher dans des chaînes de caractères un motif (une occurrence, une autre chaine de caractères définie). On utilise les expressions régulières dans presque toutes les commandes d’administration. On peut les retrouver dans de nombreux langages comme le BASH, le PHP, Javascript, etc… ou encore dans des logiciels d’édition, comme vi, Notepad++, PsPad, etc… .
C’est pour quoi, je ne développerai pas plus sur les RegEx ici, car des livres complets existent sur ce sujet, et un article entier serait une bonne façon des aborder, plutôt que quelques lignes posées dans un paragraphe.

Fonctionnement

Ces trois commandes grep fonctionnent de la même façon.
Grep commence à lire la première ligne du fichier (ou depuis l’entrée standard si aucun fichier n’est fourni, ou si le nom – est mentionné) , la copie dans un tampon, la compare à la chaîne de recherche (le motif), et si la comparaison est valide, imprime la ligne à l’écran. Grep va ainsi répéter ce processus jusqu’à la fin du fichier (ou de l’entrée standard).

Les symboles

On va d’abord vite faire le tour des symboles que nous pouvons utiliser dans les expressions régulières.
Les caractères ^ et $ indiquent le début ou la fin d’une chaîne, et permettent donc de la délimiter.
« ^debut »: chaîne qui commence par « debut »
« fin$ »: chaîne qui se termine par « fin »

Les caractères *, + et ?, respectivement zero ou plusieurs, un ou plusieurs, un ou aucun, permettent de donner une notion de nombre.
« abc+ »: chaîne qui contient « ab » suivie de un ou plusieurs « c » (« abc », « abcc » …)
« abc* »: chaîne qui contient « ab » suivie de zero ou plusieurs « c » (« ab », « abc » …)
« abc? »: chaîne qui contient « ab » suivie de zero ou un « c » (« ab » ou « abc »)

Les accolades {,} permettent de donner des limites de nombre.
« abc{2} »: chaîne qui contient « ab » suivie de deux « c » (« abcc »)
« abc{2,} »: chaîne qui contient « ab » suivie de deux « c » ou plus (« abcc » etc..)
« abc{2,4} »: chaîne qui contient « ab » suivie 2, 3 ou 4 « c » (« abcc » .. « abcccc »)

Les parenthèses ( ) permettent de représenter une séquence de caractères.
« a(bc)* »: chaîne qui contient « a » suivie de zero « bc » ou plus

Le pipe (la barre verticale) | se comporte en tant qu’opérateur OU
« un|le »: chaîne qui contient « un » ou « le »
« (un|le) chat »: chaîne qui contient « un chat » ou « le chat »
« (a|b)* »: chaîne qui contient une suite de « a » ou de « b »

Le point . indique n‘importe quel caractère
« ^.{3}$ »: chaîne qui contient 3 caractères

Les crochets [-] définissent une liste de caractères autorisés (ou interdits).
Le signe permet quand à lui de définir un intervalle. Le caractère ^ après le premier crochet indique quand à lui une interdiction.
« [abc] »: chaîne qui contient un « a », un « b », ou un « c »
« [a-z] »: chaîne qui contient un caractère compris entre « a » et « z »
« ^[a-zA-Z] »: chaîne qui commence par une lettre
« ^[^a-zA-Z] »: chaîne qui ne commence pas par une lettre

Des exemples

Oui, parce que c’est bien beau tout cela, mais il faut aussi pratiquer. Vous imaginez qu’on ne va pas non plus faire le tour de la question, mais uniquement faire tomber les premières barrières qui pourraient vous empêcher d’utiliser grep.

Pour des exemples simples, je ne vais pas faire de copier/coller, vous en trouverez ici, et ci-dessous, certains exemple que j’utilise au bureau.

Test les Erreurs dans un fichier de log : il ne faut avoir ni des ORA- ni des PLS- :

Vérifier si une chaine de caractères est présente dans un fichier :

Fonction privée pour valider une adresse email :

Fonction de test si une chaîne de caractères est numérique :

La Famille

Je disais une petite famille, car grep est disponible en trois commandes distinctes mais toutes liées : grep, egrep et fgrep.
Egrep est identique à grep -E.
Fgrep est identique à grep -F.
Rgrep est identique à grep -r.

-E, –extended-regexp
Interpréter le MOTIF comme une expression rationnelle étendue
-F, –fixed-strings
Interpréter le MOTIF comme une liste de chaînes de caractères, séparées par des sauts de ligne. Chacune d’entre elles doit être recherchée.
-r, –recursive
Lire tous les fichiers à l’intérieur de chaque répertoire, récursivement.

 Maintenant, amusez-vous bien, mais je serais curieux de voir cela. Alors n’hésitez pas à publier vos trouvailles.

Raspberry Pi 3

Il y a quelques mois, la fondation Raspberry Pi a créée la surprise en sortant un nouveau modèle de Raspberry Pi : le Raspberry Pi Zero.
Cette semaine, c’est au tour du Raspberry Pi 3.

Des petits $ pour des millions de ventes

Le Raspberry Pi original et ses successeurs ont toujours été des mini-ordinateurs accessibles à tous, avec des prix pouvant varié de 5$ pour le Raspberry Pi ZERO, à 35$ pour le dernier Raspberry Pi 3.
Depuis 2012, des millions de personnes ont utilisé un Raspberry Pi pour acquérir leur première expérience en programmation et en développement, et créer des projets laissant libre court à leur imagination. La fondation Raspberry, c’est plus de trois millions de ventes uniquement pour le Raspberry Pi 2. Elle est passée d’une poignée de bénévoles, à plus d’une soixantaine d’employés à temps plein. Et chaque semestre, elle nous amène son lot de nouveautés.

Raspberry Pi 3

Après le Raspberry Pi Zero, fabriqué au Pays de Galles, et vendu 5$ seulement (ce qui en fait l’ordinateur le moins cher du marché devant CHIP qui est à 9$), c’est au tour du Raspberry Pi 3. Le constructeur annonce une hausse des performances de 50 à 60 % par rapport au Raspberry Pi 2 pour des applications 32 bits. Mais qu’a donc dans le ventre ce dernier du nom?

Encore plus rapide

Le Raspberry Pi 3 dispose d’un SoC 64 bits Broadcom BCM2837 ARM Cortex A53 avec quatre cœurs à 1,2 GHz.
Pour rappel, le Raspberry Pi exploite un seul ARM11 à 700 MHz, alors que le Raspberry Pi 2 exploite, quant à lui, un SoC Cortex-A7 avec quatre cœurs à 900 MHz.

raspberry_pi_3_review

Des nouveautés intéressantes

On trouve, tout comme le Raspberry Pi 2, 1 Go de LPDDR2, mais surtout, l’arrivée du Wi-Fi 802.11n et du Bluetooth 4.1 (classic et LE), ce qui n’était pas le cas auparavant. Le design du nouveau Raspberry Pi 3 reste donc très proche de celui de son prédécesseur, à la différence près de la position des LED qui ont été déplacées à côté de la carte SD, pour faire place à l’antenne.

Raspberry Pi 3 2 1

Pour le reste, la connectique ne change pas, avec un port réseau 100 Mb/s (on attends toujours le passage en Gb), un emplacement pour une carte microSD, une sortie vidéo HDMI, quatre ports USB 2.0 et un connecteur GPIO à 40 broches. Ses dimensions sont de 85 x 56 x 17 mm. Coté alimentation, la fondation Rapsberry Pi recommande l’utilisation d’un adaptateur 2.5A.

raspberry_pi_3_01

Acheter le Raspberry Pi 3

Une belle promo de lancement sur le site de Pi Hut (vite vite, dépêchez-vous, il est à 30£). Sinon, vous pourrez le commander chez Element14 pour une 40aine d’euros ou chez RS Components pour 44,30 euros (réservé aux professionnels, numéro SIRET obligatoire).

PFsense : Nat reflection

Par défaut, pfSense ne redirige pas les clients connectés en interne (réseau local) pour atteindre les ports NATtés sur les interfaces WAN.
En effet, si un client LAN tente d’accéder à un service sur le port 80 ou 443 d’un autre client NATé par son IP WAN (ou un autre port NATté), la connexion n’aboutira pas et on obtiendra une erreur de type « nom d’hôte non reconnu ». L’option NAT Reflection utilise des techniques pour rediriger ces connexions.

NAT Reflection

Afin d’accéder aux ports NATés sur l’interface WAN à partir des réseaux internes, NAT reflection doit être activé.
Pour ce faire, accédez à System > Advanced, onglet Firewall/NAT.
Sur cette page, activez le mode Pure NAT dans la section NAT Reflection mode for port forwards, et cochez les cases :
Enables the automatic creation of additional NAT redirect rules for access to 1:1 mappings of your external IP addresses from within your internal networks
et
Automatically create outbound NAT rules which assist inbound NAT rules that direct traffic back out to the same subnet it originated from.

NAT reflection dans PFsense

Utilisation

Vous avez un lapin Karotz ou Nabaztag, et avez monté un serveur local. Ce serveur est accessible pour vos amis, mais lorsque vous voulez y accéder par son adresse publique (votre interface WAN), vous tomber sans cesse sur une erreur de type « hôte inconnu ».
En activant NAT Reflection, vous pourrez accéder à votre serveur OpenJabNab depuis l’extérieur sur votre adresse IP publique, mais aussi de la même manière depuis votre réseau local.

Les joies de la commande telnet

Qui n’a jamais pesté alors qu’il était en train de faire le malin avec la commande telnet ?
En effet, bien pratique cette commande telnet pour tester un service UNIX ou s’amuser, mais lorsque son écran reste bloqué, on fait moins malin.

Utiliser telnet pour tester un service

Un petit exemple tout bête : vous voulez vérifier que le service que vous venez de mettre en place est bien accessible. Il suffit de faire un telnet sur son port d’écoute (ici nous testons les ports 50010 et 50050).

Pour un service qui n’est pas accessible, on aura ceci :

Et au bout de quelques (longues) secondes, vous aurez le message suivant :
telnet: Unable to connect to remote host: Connection timed out

Mais si votre service est accessible, il répondra ainsi :

Vous aurez une réponse du serveur : Connected to 192.168.1.101.

Sortir de telnet

Ok, on a fait le malin, on a montré qu’on savait tester si un service répondait.
Maintenant, essayez donc de trouver la solution pour sortir de là !!!
Pas facile hein?!

Pourtant, la solution est simple. Comme le port Salut, c’est écrit dessus : Escape character is ‘^]’.
Mais ça veut dire quoi ??? La petite astuce : le caractère tant attendu est produit par la combinaison de touches suivante :
sous Windows : Ctrl + $ ou CTRL + (
sous Linux : Ctrl + Alt Gr + ]

Et voilà.

Pourquoi parler cela ?

Tout simplement parce qu’un collègue est tombé dans le panneau, et qu’il a fallut lui montrer comment faire pour sortir proprement d’un telnet, même planté. En espérant que cette info servira à un peu plus de monde, notamment lorsque vous testerez les liens ci-dessous… .

Easter Eggs

Certains en profite pour mettre un peu de fun sur Internet, et j’avoue que je suis friand de ce genre de trucs, les Easter Eggs.

Essayer de faire un telnet towel.blinkenlights.nl 666
Vous obtiendrez des excuses sympas du genre :

the butane lighter causes the pincushioning
Decreasing electron flux
Hash table has woodworm
Digital Manipulator exceeding velocity parameters

Encore plus sympa et plein de fonctionnalités : essayez donc  telnet telehack.com
Quand je dis plein de fonctionnalités, c’est que vous pouvez y passer un moment fou, car il s’agit d’une compilation d’un peu tout les Easter Eggs disponibles sous telnet.
Tapez cowsay helloo pour obtenir une vache qui dit helloo
Tapez octopus et validez, puis une touche pour obtenir sa correspondance en binaire, octal, hexa, et ascii!!!

Et vous en avez, une palanquée comme cela (60 au total), parmi lesquelles :

et si vous avez un moment, testez donc ceci : starwars
Sinon, il existe encore des vieux BBS dont une liste est disponible ici.

 En espérant vous avoir fait perdre un peu de temps… .

Installer des paquets sur pfSense

Parfois, on aimerait installer des paquets sur pfSense. Et bien c’est possible, car en plus des outils disponibles par défaut dans le système de package pfSense, des milliers de paquets de FreeBSD supplémentaires sont aussi disponibles. Un tutoriel rapide pour installer des paquets nécessaires.

Bootstrapping pkg

pfSense 2.2 est basé sur FreeBSD 10.1 et utilise aussi la commande pkg pour gérer manuellement des packages FreeBSD. Attention toutefois, il faut rappeler le but de pfSense : installer des paquets sur pfSense, ok, mais la sécurité avant tout.

pfSense® software is a free, open source customized distribution of FreeBSD specifically tailored for use as a firewall and router that is entirely managed via web interface. In addition to being a powerful, flexible firewalling and routing platform, it includes a long list of related features and a package system allowing further expandability without adding bloat and potential security vulnerabilities to the base distribution.

En effet, si une sécurité forte est souhaitée pour votre pare-feu pfSense, alors oublier cet article et n’installez pas de paquets supplémentaires. Dans le cas contraire, si vous savez où vous mettez les pieds, et que vous allez maintenir garder à jour votre système, cet article est fait pour vous.

Bon, tout d’abord, il vous faut un shell prompt (accessible depuis votre console ou en SSH, option 8 du menu). Ensuite, vous verrez, c’est un système de paquets comme rpm, ou apt, relativement simplissime!!!
ScreenShot037

Mettre à jour de la liste des paquets

Avant toute chose, il faudra mettre à jour vos metadata avant de pouvoir installer des paquets sur pfSense :

Installer des paquets sur pfSense

Maintenant que la liste des paquets est à jour, il ne vous reste plus qu’à installer celui dont vous avez besoin. Dans mon cas, j’ai besoin de rsync :

Activer le nouveau paquet

Votre paquet est maintenant installé, mais pas encore disponible!!! Pour qu’il le soit, il vous reste encore une petite commande à exécuter :

Vraiment pas compliquer d’installer des paquets sur pfSense!

Allez plus loin avec pkg

Pour aller plus loin avec la commande pkg, utilisez l’aide !!!

Vous pourrez ainsi vérifier la sécurité de vos paquets, ou chercher le paquet qui répondra à votre besoin.

Ou encore, faire une recherche si vous ne connaissez pas le nom exact du paquet à installer.

Amusez-vous bien!!!

Mon avis sur le VivoPC VM62 de ASUS

J’ai pu tester le modèle ASUS VivoPC VM62 dans le cadre d’un marketing collaboratif. C’est un mini PC plein de promesses. Mais les tient-il réellement? Mon avis sur ce produit ci-dessous. Bonne lecture.

Présentation du VivoPC VM62

Le VivoPC est un Mini PC permettant un gain de place conséquent, à la maison comme au bureau, il est ultra compact et se fond n’importe où. Mais sous son petit capot se cache une grande capacité de stockage. Il est doté de connexions 3x plus rapides grâce au Wi-Fi 802.11AC intégré, et son capot coulissant permet un accès facile à la mémoire vive, mais aussi, avec la technologie Vivo DualBay, au(x) disque(s) dur(s).

caracteristiques
Adjoint d’un clavier et d’une souris sans fil, il sait se faire discret et transportable. Il se branche sur n’importe quel écran de PC, mais aussi en HDMI sur des TV équipées de cette connectique.
Il a l’avantage de se comporter comme un PC de bureau classique.
Il est très performant et son aspect et son design se marrie parfaitement, qu’il s’agisse du salon, près de ma TV, a coté de mon ampli Audio/Vidéo, ou à coté de mes écrans de PC dans mon bureau.

Caractéristiques du VivoPC VM62

Processeur Intel® Core™ de 4ème génération.
Vivo DualBay : espace pour deux périphériques de stockage.
Des graphismes 4K/2K très détaillés et réalistes.
Une qualité audio opimale avec la technologie SonicMaster.
ASUS HomeCloud avec Wi-Fi 802.11ac.
Boîtier de 56 mm de haut, au design épuré et élégant.

Il est équipé d’un processeur Intel® Core™ i5-4210U , ce qui est du milieu de gamme actuellement. C’est un processeur de 4ème génération basse consommation (Le 4 dans 4210 pour 4ème génération et le U pour basse consommation).

skylake-igp-performances
Côté carte graphique, il s’agit d’une Intel® HD Graphics 4400, donc du standard qui équipe les ordinateurs depuis un moment déjà… . C’est une carte graphique qui est intégrée au processeur, qu’on appelle IGP. Elle est parfaitement capable de gérer des travaux de bureautique ainsi que des jeux 2D. En revanche, pour les jeux 3D, cela se complique un peu.

Il est aussi équipé de sorties HDMI et mini DisplayPort pour se connecter à un écran ou une télévision HD. Je l’ai utilisé sur un écran de PC Philips, une TV SONY Bravia et un vidéo projecteur DELL en HDMI.
En ce qui concerne le rendu graphique, il faut avouer que sur une TV, c’est in-regardable. Trop petit, trop brillant, trop scintillant. Je déconseille vivement.
Il faut utiliser la sortie HDMI pour visionner des films sur sa TV…sinon, préféré un bon écran de PC.

Utilisation du VivoPC VM62

Il est largement puissant pour tous les travaux de bureautique, du multimédia de base, surfer sur Internet, et regarder des vidéos (MP4, MKV, etc…).
Il fonctionne sous Windows 8.1, Windows 10, mais aussi Ubuntu et d’autres distributions Linux tel que Kodi.

face_arriere

Il dispose aussi d’un lecteur de cartes 4-en-1 (SD/SDHC/SDXC/MMC) et de plusieurs ports USB 2.0 et 3.0 capables de booster la vitesse des transferts de données.
Le VivoPC VM62 propose également un port de sortie SPDIF optique pouvant prendre en charge un son multi-canal ainsi que deux sorties jacks audio.
Mais voilà, gros gros inconvénient, les ports USB et le lecteur de cartes, la connectique en général, est vraiment mal étudiée. Ils devraient plutôt être en façade avant.

arriere_vivopcVM62 facade_vivoPC VM62

Mes conclusions pour ce Mini PC

Pour conclure, je m’attendais à une station multimédia, malheureusement, je suis un peu déçu car sa résolution sur une TV est vraiment mauvaise pour faire des travaux de bureautique. Il faut voir ce mini PC comme un PC de bureau avec peu d’encombrement.
Les plus :
puissant, rapide, silencieux, transportable (même si maintenant, je n’en vois pas vraiment l’intérêt).
Les moins :
son poids de 1,2kg (mais uniquement si on doit le déplacer, et comme il n’y a pas d’intérêt à le déplacer…), pas de Windows 10 en natif, aucun accessoire ni câble fourni (souris, clavier, câble HDMI), et surtout pas de connectique en façade.

Sauvegarder votre raspberry avec rpi-clone

J’en profite pour faire un rapide retour sur rpi-clone que je vous présentais il y a quelques semaines de cela.

rpi-clone c’est ce script shell qui sauvegarde/clone le système de fichiers d’un Raspberry Pi à chaud sur une autre carte micro-SD connectée sur un port USB du Raspberry Pi.
Particularité du script : il peut faire des sauvegardes de cartes SD ou micro-SD sur des cartes de taille différente (inférieure ou supérieure) à la carte sur laquelle le Raspberry Pi a démarré.

Bill WILSON a mis à jour son dépôt GitHub et a ajouté un petit lien vers mon script. Donc grande satisfaction personnelle pour un script que j’ai repris et que j’utilise depuis un bon moment.

For a French translation of rpi-clone by Mehdi HAMIDA, go to: https://github.com/idem2lyon/rpi-clone

Merci Bill !!!