Si cela vous déplait, dites le moi ;-).
Malheureusement, la planche à découper est deja en rupture de stock.
Scraly'sblog
grepgrrlTitre : au lieu de la sortie standard qui oblige d’être présent ou présente lors de l’exécution du script et/ou à recopier les informations dans un fichier texte, on va rediriger la sortie standard (sdout) vers un fichier.
Matériel :
Reprendre l’exercice 3 (avec le fichier donnees3.csv) et le script3.sh que vous avez créé dans l’exercice 3.
Résultat à fournir :
Il faut rediriger le résultat du script3.sh dans un fichier appelé extraction-script3-”anneemoisjour-hhmm”.txt (si on lance le script le 3 février 2008 à 12h10, le fichier de sortie doit s’appeler extraction-script3-20080203-1210.txt ).
Il y a deux façons de faire : intégrer la génération du fichier de sortie au script, c’est la façon la plus propre de procéder, l’autre façon est de rediriger la sortie sur la ligne de commande (c’est alors dépendant de la façon de lancer le script.). Ecrivez les deux manières de faire.
Indications :
Utiliser la redirection > et >>.
Commandes à utiliser : date
Questions à se poser :
Est-il nécessaire de créer un fichier extraction-script3-”anneemoisjour-hhmm”.txt vide avant ? Quelle est la différence entre > et >> ?
Bonus :
Documentez-vous sur la commande tee, et envisagez de l’utiliser dans le script4.sh (qui serait une copie du script 3). Quelle est l’utilité de cette commande ?
à bientôt
Aurélie
Scraly'sblog
grepgrrlVendredi 16 Mai 2008 a 20h30
Maison Populaire de Montreuil
ENTREE LIBRE
Hybridation des genres, machines, prothèses, identités cyborg, réappropriations performatives, pornographie signent le devenir queer du cinéma contemporain, repoussant, aux confins de la vidéo d’artiste et du cinéma expérimental, les identifications binaires, les limites du corps, du privé, de l’obscène. Le nouveau cinéma Queer documente aussi la subculture voguing, les politiques Queer antimilitaristes et anti G8 et les représentations trans, depuis une position souvent revendiquée comme collective, qui réfléchit au cadre éthique dans lequel (auto)représenter ou témoigner d’« identités qui échappent à l’œil du système ».
Scraly'sblog
grepgrrlWomen, Technology and Networks in Eastern Europe
Exhibition, performances, meetings
10 May - 22 June 2008
Kunstraum Kreuzberg / Bethanien Berlin, Germany
Opening: 9 May, from 19.00
The exhibition project HACK.Fem.EAST seeks to present experimental and artistic practices of artists and activists working in digital networks in Eastern Europe. Main topics are media, art and hacking. Main protagonists are women or projects in which women play an important role.
More information on the exhibition : http://www.hackfemeast.org.
Fabienne
grepgrrlTitre : Trier les informations dans un fichier, récupérer ce qui est pertinent et présenter les résultats
Matériel :
==========================
1. Voici le fichier à traiter (créer un fichier appeler donnees3.csv sur votre machine) :
GROUPE1;APPLI1;HOSTNAME1;STATUS1;LEVEL1; Alerte de type 1;20080101
GROUPE2;APPLI2;HOSTNAME2;STATUS2;LEVEL2; Alerte de type 7;20080102
GROUPE3;APPLI3;HOSTNAME3;STATUS3;LEVEL3; Alerte de type 3;20080103
GROUPE4;APPLI4;HOSTNAME4;STATUS4;LEVEL4; Alerte de type 7;20080104
GROUPE5;APPLI5;HOSTNAME5;STATUS5;LEVEL5; Alerte de type 5;20080105
GROUPE6;APPLI6;HOSTNAME6;STATUS6;LEVEL6; Alerte de type 8;20080106
GROUPE7;APPLI4;HOSTNAME4;STATUS7;LEVEL7; Alerte de type 7;20080107
GROUPE8;APPLI8;HOSTNAME8;STATUS4;LEVEL4; Alerte de type 8;20080108
GROUPE7;APPLI4;HOSTNAME3;STATUS9;LEVEL4; Alerte de type 9;20080109
GROUPE8;APPLI8;HOSTNAME8;STATUS4;LEVEL5; Alerte de type 8;20080108
GROUPE7;APPLI4;HOSTNAME3;STATUS9;LEVEL4; Alerte de type 9;20080109
GROUPE6;APPLI4;HOSTNAME9;STATUS7;LEVEL4; Alerte de type 8;20080110
GROUPE8;APPLI8;HOSTNAME8;STATUS4;LEVEL4; Alerte de type 7;20080118
GROUPE7;APPLI4;HOSTNAME3;STATUS9;LEVEL4; Alerte de type 7;20080119
Résultat à fournir :
=============================
Ecrire un script appelé script3.sh qui, sans réaliser de fichier temporaire ou intermédiaire, va permettre de donner sur la sortie standard (écran = stdout) le résultat suivant (sans les guillemets). Seules les indications entourées de guillemets sont dynamiques :
”
Pour le mois "01"/"2008", il y a eu "13" alertes.
Les 3 alertes les plus fréquentes sont :
"
5 Alerte de type 7
4 Alerte de type 8
2 Alerte de type 9
"
Le niveau d'alerte le plus fréquent ce mois est : "LEVEL4" .
”
Indications :
=========================
Les commandes qui peuvent être utilisées sont (il n’est pas nécessaire de toutes les utiliser, utilisez bien les pages de manuel pour vous aider) : cat, expr, cut, awk, wc, uniq, sort, tail, head, echo, print)
L’ opérateur à employer est | (toujours paillepe :) ).
Questions à se poser :
======================
1. Il faut toujours écrire ce que l’on sait déjà faire avant de chercher les choses que l’on ne sait pas faire (exemple : on sait compter les lignes, alors écrire la commande dans le script).
2. L’indication des commandes est ici une facilité ainsi que le fait que le fichier à traiter soit traitable à la main (c’est différent quand il y a 50 000 enregistrements). Normalement, on doit se dire ” Pour obtenir le nombre d’alertes je dois lire le fichier et compter les lignes, dois-je m’inquiéter des lignes vides ? Si j’essaie la commande est-ce que j’obtiens le bon résultat ? Comment obtenir tel champ, d’ailleurs à quoi correspond-il ? Est-ce que je suis sûr/sûre que cela me renvoie à tous les coups le bon résultat ? Est-ce qu’il existe une commande qui va compter mes enregistrements ? Est-ce qu’il existe une option à la commande que j’utilise qui va me permettre de compter mes enregistrements ? Puisqu’on ne peut pas écrire $MOIS/$ANNEE , comment concatène-t-on les valeurs de variables ? ”
Au bout de quelques temps les questions ci-dessus deviennent des automatismes absolument inconscients : c’est la connaissance et l’expérience.
Au départ, il faut apprendre les commandes : “cut sert à cela, tail sert à cela” et bien lire les manuels. Il est rare de connaître toutes les options d’une commande, mais il faut savoir à quoi servent les commandes. Il existe des systèmes sur lesquels les pages de manuels ne sont pas installées (si,si) et où l’accès au réseau extérieur n’est pas autorisé (si,si). Il est alors bien utile de connaître quelques commandes avec leurs options les plus fréquentes.
N’hésitez pas à poser vos questions en commentaire.
solveigDepuis des mois (ou plus ?), je vais mal. Avec des périodes de redoux, des pics cataclysmiques et d'infinies étendues mornes, mais dans l'ensemble, je vais mal.
Pendant des années, je gérais mon mal-être en n'en parlant pas et en faisant "comme si", avec des moments où mes masques de sourire tombaient en morceaux et où j'étais très mal jusqu'à les remettre. Puis j'ai appris à formuler, à assumer un peu mon mal-être. Mais finalement, ça ne m'aide pas beaucoup à le surmonter, ça aurait plutôt tendance à m'y maintenir à force de cacher le reste, le beau et le joyeux.
Durant cette noyade dans la déprime, chaque attention, chaque mot gentil ou positif m'a fait l'effet d'une bouée pour quelques vagues. Souvent, je ne me sentais pas l'énergie de trouver les mots exacts pour dire le bien que ça me faisait, alors souvent je répondais d'un bref "merci" entouré de quelques mots. Parfois, j'ai osé dire "je vais mal, mais ce geste me fait du bien". Sauf qu'en fait, faut pas le dire : parce qu'après, les gestes suivants, je me demande s'ils sont sincères ou motivés par la compassion. Or c'est pas du tout pareil : qu'on me dise "j'aime ça chez toi", ça m'aide à voir ce que j'ai à offrir en partage, ça m'aide à m'accepter. Si j'entends derrière ces mots un "tu me fais pitié", et ils m'alourdissent de ce poids mort. Les interactions du type "aider une amie qui va mal", ben elles sont souvent déprimantes en soi, elles me permettent peut-être d'ouvrir les vannes dans un environnement de confiance où je sais que je vais être dorlotée, mais nulle dynamique ne me remet dans la vie de cette manière. Les enthousiasmes, les joies ne naissent pas dans des environnements tranquilles.
J'ai l'impression d'avoir fait de ma vie un cimetière, où je contiens mes sentiments pour éviter de pleurer, où je renonce à courir, hurler, vivre... et ceux que j'aime / qui m'aiment y sont enterrés avec moi, leurs efforts pour m'aider sont vains puisque je leur suis absente. P't'être j'vais essayer d'aller bien, même s'il faut faire semblant. À jouer un rôle, on finit par l'incarner vraiment, et puis "jouer un rôle", c'est déjà "jouer", c'est un bon début. Pour être de nouveau animée de joie, de rires, d'émerveillement, il faut que je les laisse entrer dans ma vie. Il faut que j'accepte de me faire bousculer, de me mettre en danger, d'accorder ma confiance sans savoir, de tenter sans certitude de réussite. Lâcher le contrôle.
Je ne me sens pas fiable, inconstante - et alors ? Si je me lance dans des projets dont la plupart avorteront, faute de temps ou de suivi, tant pis. Ou plutôt non : ce serait nul, effectivement, si je faisais peser cela sur d'autres, s'ils devaient ramasser mes pots cassés ; mais si je me lance des défis à moi-même, hé bien... seul mon orgueil peut souffrir qu'ils n'aboutissent pas. Et mon orgueil est p't'être la chose la plus grande en moi, ex aequo avec la tristesse, alors j'aurais qu'à lui raboter un peu la gueule, je voyagerai plus légère.
zopeuse
Fabienne
linuxchix-france
zopeusepar zopeuse (noreply@blogger.com) le April 29, 2008 12:46 PM
Scraly'sblog
scumgrrls
grepgrrlTitre : Compter les informations dans un fichier et présenter les résultats
Matériel :
1. Voici le fichier à traiter (créez un fichier appeler donnees2.csv sur votre machine) :
GROUPE1;APPLI1;HOSTNAME1;STATUS1;LEVEL1; Alerte de type 1;20080101
GROUPE2;APPLI2;HOSTNAME2;STATUS2;LEVEL2; Alerte de type 2;20080102
GROUPE3;APPLI3;HOSTNAME3;STATUS3;LEVEL3; Alerte de type 3;20080103
GROUPE4;APPLI4;HOSTNAME4;STATUS4;LEVEL4; Alerte de type 4;20080104
GROUPE5;APPLI5;HOSTNAME5;STATUS5;LEVEL5; Alerte de type 5;20080105
GROUPE61;APPLI61;HOSTNAME61;STATUS6;LEVEL6; Alerte de type 6;20080106
GROUPE7;APPLI4;HOSTNAME4;STATUS7;LEVEL7; Alerte de type 7;20080107
GROUPE8;APPLI8;HOSTNAME8;STATUS4;LEVEL4; Alerte de type 8;20080108
GROUPE7;APPLI4;HOSTNAME3;STATUS9;LEVEL4; Alerte de type 9;20080109
Résultat à fournir :
Ecrire un script appelé script2.sh qui, sans réaliser de fichier temporaire ou intermédiaire, va permettre de donner sur la sortie standard (écran = stdout) le résultat suivant (je vous ai indiqué entre guillemets ce qui est dynamique) :
Nous avons eu "9" alertes ce mois.
Parmi ces alertes on a eu "3" alertes de niveau LEVEL4.
Ces alertes de niveau LEVEL4, avaient comme commentaires :
"
Alerte de type 4
Alerte de type 8
Alerte de type 9
"
Indications :
Commandes pouvant être utilisées : grep, cat, wc, cut (de préférence ou awk, plus complexe), echo ou print
L’opérateur : | (pipe (fr: tube) se prononce “paillepe”)
Questions à se poser :
1. Pensez bien “si je veux tel résultat, je l’obtiens en récupérant l’information de la colonne ou de la ligne …. Si je veux savoir telle chose, je l’obtiens en lisant le fichier et en comptant telle information… etc.”
2. Rédigez votre script en vous basant sur le modèle fourni dans la partie 1.
3. On doit être sûr que le décompte de la chaine de caractères “LEVEL4″ est bien issu de la colonne indiquant les niveaux, comment procéder ?
4. Le fichier de départ est petit. Vérifiez vos résultats.
J’ai ajouté la solution de l’exercice 1 dans les commentaires de l’exercice 1.
grepgrrlTitre : Récupérer une information dans un fichier et la présenter.
Matériel :
1. Voici le fichier à traiter (créez un fichier appeler donnees1.csv sur votre machine) :
GROUPE1;APPLI1;HOSTNAME1;STATUS1;LEVEL1; Alerte de type 1;20080101
GROUPE2;APPLI2;HOSTNAME2;STATUS2;LEVEL2; Alerte de type 2;20080102
GROUPE3;APPLI3;HOSTNAME3;STATUS3;LEVEL3; Alerte de type 3;20080103
GROUPE4;APPLI4;HOSTNAME4;STATUS4;LEVEL4; Alerte de type 4;20080104
GROUPE5;APPLI5;HOSTNAME5;STATUS5;LEVEL5; Alerte de type 5;20080105
GROUPE6;APPLI61;HOSTNAME61;STATUS61;LEVEL61; Alerte de type 61;20080106
Résultat à fournir :
Ecrire un script appelé script1.sh qui, sans réaliser de fichier temporaire ou intermédiaire, va permettre de donner sur la sortie standard (écran = stdout) le résultat suivant :
Parmi les machines ayant eu des alertes ce mois on trouve les machines suivantes :
HOSTNAME1
HOSTNAME2
HOSTNAME3
HOSTNAME4
HOSTNAME5
HOSTNAME61
Indications :
Commandes pouvant être utilisées : cut (de préférence), echo ou print, cat (pour lire le fichier)
Questions à se poser :
Il existe plusieurs façons de construire un script, celle que je vous propose est la suivante :
1. écrivez l’en-tête du script (voir le post précédent) et indiquez par des commentaires où vous placerez les variables et où vous placerez les commandes. Dans certains scripts vous devrez placer des variables au cours de votre script, le résultat pouvant changer entre le début et la fin d’un script, le calcul de la taille d’un répertoire par exemple)
2. “Sur la sortie standard (écran)” : cela signifie que vous lancez la commande d’exécution et vous devez en retour lire le résultat du script à l’écran.
3. Il faut ensuite rédiger le script : ici il faut se dire “sur une ligne j’écris la phrase d’annonce, ensuite je donne la liste des hostnames. La phrase ne contient aucun élément variable, donc j’utiliserai la commande …. . A quoi correspond la liste des hostnames ? Est-ce que c’est une ligne, est-ce que c’est une colonne ?”
4. On teste les commandes qui ne modifient pas le fichier de données, dans un terminal avant de les inclure dans le script.
5. Si on lance un script en console pour débugger et savoir exactement les commandes passées par le script on lance le script de la manière suivante :
$ sh -x script1.sh (si on a bash comme shell, et débuté le script par #!/bin/sh , il existe aussi parfois des liens /bin/bash sur /bin/sh et .bin/sh peut aussi être lié sur un autre type de shell. De base sous GNU/Linux en général on dispose de bash)
$ ksh -x script1.ksh (si on a ksh comme shell, et débuté le script par #!/bin/ksh , c’est fréquent sous solaris, aix …)
grepgrrlBonjour,
J’ai l’honneur de débuter cette catégorie du blog (sur une proposition de carmie il y a quelques mois).
Les exercices que je proposerai porteront principalement sur l’apprentissage du shell scripting utile dans l’administration de systèmes Unix et Gnu/Linux.
#!/bin/sh # ^ pour l'exécution du script # @(#) Ce que fait le script sur une mini-ligne # @(#) Utilisateur : utilisateur normal ou root ou xxxxxx # liste des variables (si utilisées, une variable s'écrit souvent # en majuscule et sa valeur commence toujours par un $ ) MAVARIABLE="bonjour" # les commandes echo $MAVARIABLE # fin
A demain pour le premier exercice !
à chaque nouvel exercice, la correction que je vous proposerai sera dans les commentaires de l’exercice corrigé.
Fabienne
scumgrrls
Scraly'sblog
Fabienne
stubbornellaHa! Take that Eric.
I know most of you want ladies at conferences. Most of you are delighted when we show up. No more excuses conference organizers! There are loads of geeky women speakers, who would be delighted to share their technical expertise with your audience.