samedi 26 novembre 2022

Tag Archives: linux

Crontab pour les nuls

Cron est ce qu’on appelle un planificateur de tâches périodiques pour les systèmes de type Unix. Il permet aux utilisateurs de planifier des tâches pour une exécution périodique. Il est couramment utilisé pour automatiser les tâches de maintenance du système ou d’administration. Je vais faire un rapide tour pour que vous puissiez au moins avancer un peu.
Prenons comme exemple un petit script de sauvegarde qu’on appellera sync_home.sh Ensuite, il y a 2 solutions. Soit l’exécution est rattachée à un utilisateur, soit elle est rattachée au système. Dans le premier cas de figure, il faut se connecter avec cet utilisateur, et exécuter la commande crontab -e . Si ça n’est pas déjà fait, vous allez pouvoir choisir l’éditeur de votre choix.

$ crontab -e
no crontab for idem - using an empty one

Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano 3. /usr/bin/mcedit
4. /usr/bin/vim.basic
5. /usr/bin/vim.nox
6. /usr/bin/vim.tiny

Choose 1-6 [2]: 5

Dans le second cas, il faudra éditer le fichier /etc/crontab

$ vi /etc/crontab

Les règles se construisent comme indiqué :
# m h dom mon dow command

m est pour minutes [0-59]
h est pour heure [0-23]
dom est pour journée du mois [1-31]
mon est pour mois, de janvier à décembre [1-12]
dow est pour journée du dimanche au samedi [0-6]
command est le chemin d’accès absolu de votre script

Voici des exemples de règles cron :

Exécuter un script à tous les jours à minuit

# m h dom mon dow command
0 0 * * * /home/idem/scripts/sync_home.sh

Exécuter un script le lundi à 14h30

# m h dom mon dow command
30 14 * * 1 /home/idem/scripts/sync_home.sh

Exécuter un script à toutes les heures

# m h dom mon dow command
0 */1 * * * /home/idem/scripts/sync_home.sh

Exécuter un script à toutes les 30 minutes

# m h dom mon dow command
*/30 * * * * /home/idem/scripts/sync_home.sh

Enregistrer le fichier, et c’est fini. Ok, pour nous qui avons grandit avec ça, c’est évident, mais il faut aussi penser à ceux qui débutent. Have fun!

AWK par l’exemple

Dans cet article, je vous propose de découvrir l’utilisation de awk (en ligne de commande, et non en script) pour lire ou analyser des fichiers, texte ou CSV, contenant plusieurs délimiteurs ou séparateurs.
Prenons comme exemple ce fichier texte (Prénom, département, mois, jour de naissance, nombre de frères, nombre de sœurs) :

$ cat fichier.txt
Sarah:69:03;08;2013;0;0
Emilie:63:06;18;1981;0;1
Mehdi:69:09;16;1974;1;0
Edouard:69:03;27;1989;3;0

  1. Pour imprimer la 3ème colonne contenant la date de naissance :

$ awk -F':'  '{print $3}' fichier.txt
03;08;2013
06;18;1981
09;16;1974
03;27;1989
En précisant -F’:’ nous précisons à awk que le délimiteur est le caractère ‘:‘ . La troisième colonne correspond donc à $3


2. Pour imprimer le mois de naissance, la 3ème colonne tout séparateur confondu :

$ awk -F '[:;]' '{print $3}' fichier.txt
03
06
09
03

En précisant -F'[:;]’ nous précisons à awk que les délimiteurs sont les caractère ‘:‘ et ‘;‘ .


3.  Ajouter des variables, savoir combien de frères et sœurs ont les personnes :

$ awk -F '[;:]' '{$2=$6+$7;print $1,$2}' OFS=: fichier.txt
Sarah:0
Emilie:1
Mehdi:1
Edouard:3

On demande à awk de faire l’addition entre frères et sœurs, et on affiche le résultat.


4. Grouper / Dégrouper des variables en affichant plusieurs lignes pour la même personne :

$ awk -F '[;:]' '{for(i=3;i<=5;i++){print $1,$2,$i;}}' OFS=:fichier.txt
Sarah:69:03
Sarah:69:08
Sarah:69:2013
Emilie:63:06
Emilie:63:18
Emilie:63:1981
Mehdi:69:09
Mehdi:69:16
Mehdi:69:1974
Edouard:69:03
Edouard:69:27
Edouard:69:1989

Nous avons donc pour chaque personne une ligne avec le mois, le jour et l’année de naissance.


5. Utiliser les variables spéciales :

$ awk -F '[;:]' '{print $1 " a " $NF " soeur."}'fichier.txt
Sarah a 0 soeur.
Emilie a 1 soeur.
Mehdi a 0 soeur.
Edouard a 0 soeur.

Les variables prédéfinies :
ARGC Nombre d’arguments de la ligne de commande
ARGV tableau des arguments de la ligne de commande-
FILENAME nom du fichier sur lequel on applique les commandes
FNR Nombre d’enregistrements du fichier
FS separateur de champs en entrée
NF nombre de champs de l’enregistrement courant
NR nombre d’enregistrements deja lu
OFMT format de sortie des nombres
OFS separateur de champs pour la sortie
ORS separateur d’enregistrement pour la sortie
RLENGTH longueur de la chaine trouvée
RS separateur d’enregistrement en entrée
RSTART debut de la chaine trouvée
SUBSEP separateur de subscript

Amusez-vous bien!!

Alerte SMS en bash : Pré-requis

Que ce soit depuis vos serveurs hébergés chez Netissime, Dedibox ou OVH, qu’il s’agisse de vos serveur à la maison, ou de vos raspberry, il est toujours bon d’avoir les alertes des vos serveurs en « live ».

Les remontées d’alerte par SMS (“Short Message Service”) existent déjà chez les professionnels, et sont devenues essentielles dans le monitoring de systèmes d’informations critiques. Cependant, les services gratuits permettant d’utiliser les SMS depuis le système restent rare. Pour ceux là, soit vous disposez d’une usine à gaz avec PHP, Curl, etc…, soit vous mettez simplement en place une solution en bash avec googalert. Read More »

BeagleBone

Petit dernier des inventeurs du Beagle Board, à coup sûr le Beagle Bone remplacera notre Arduino!
Beagle Bone est une carte plus petite et plus légère tout en restant un puissant ordinateur linux embarqué!
Cette carte de developpement dispose d’une interface Ethernet intégré, d’un port host USB, et d’une interface client USB  (un circuit FTDI pour les accès de type shell).
Il est même fourni avec une version « préchargée » de Linux Angstrom (sur une carte micro SD de 4 GB), mais on peut y mettre Ubuntu!

Cette interface est disponible sur Amazon, chez Adafruit, mais aussi chez Mouser (mon choix).

Avec plus d’ 1.5 billion d’opérations Dhrystone et d’opérations vectorielles à  virgules flottantes à la seconde, BeagleBone n’est pas seulement capable de s’interfacer avec tous vos contrôleurs robotiques, vos différents capteurs, système de localisation, ou encore d’appareils photos. Il est aussi capable d’exécuter du code Python, C/C++, OpenCV, OpenNI et autres logiciels de capture et d’analyse d’image permettant de reconnaître les objets autour de votre robot lui permettant ainsi d’adapter ses déplacements et mouvements en fonction.
Par l’intermédiaire d’extension HDMI, VGA ou LCD, il est capable de décoder et afficher divers formats vidéo en utilisant des piles logicielles complètement Open-Source.

Détails techniques :

  • Taille de la carte: 8.64cm x 5.33cm
  • Fourni avec une carte Micro SD de 4 GB incluant la distribution Linux Angstrom (avec node.js et l’IDE Cloud9)
  • Interface FTDI-based serial/JTAG
  • Entrées/Sorties 3.3V
  • Carte Ethernet On-chip
  • Support USB Host et Slave
  • 256MB de RAM DDR2
  • Un processeur ARM Cortex™-A8 super-scalaire cadancé à 700-MHz

[FMP poster= »http://geekandmore.fr/wp-content/uploads/2012/05/How-To_Get_Started_with_the_BeagleBone_thumb3.jpg » width= »640″ height= »360″]http://geekandmore.fr/wp-content/uploads/2012/05/How-To_Get_Started_with_the_BeagleBone.mp4[/FMP]