Revue des techniques de programmation en shell

Posté par  (site web personnel) . Édité par Benoît Sibaud, Nils Ratusznik, palm123, Nÿco, Yves Bourguignon et Pierre Jarillon. Modéré par Nils Ratusznik. Licence CC By‑SA.
114
22
sept.
2014
Ligne de commande

L'été est fini, c'est la rentrée ! Pour se remettre en forme, rien de tel qu'une revue des techniques de programmation en shell — ces techniques sont pour le shell de Bourne /bin/sh mais peuvent être utilisées avec les shells compatibles qui permettent parfois des solutions plus faciles.

Forum Programmation.shell [Résolu] Appel de SSH depuis un Shell script (Bash)

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
1
13
juin
2014

Bonjour,

En voulant appeler SSH depuis un script Shell (Bash), j'ai les erreurs suivantes : Pseudo-terminal will not be allocated because stdin is not a terminal. et stdin: is not a tty

Ma ligne de commande pour appeler le SSH est la suivante :
DISPLAY=y SSH_ASKPASS=filename setsid ssh -t -X -o 'PreferredAuthentications password,keyboard-interactive' -o 'StrictHostKeyChecking no' ${1:-}

En googlant un peu, j'ai essayé la méthode indiquant d'ajouter un -t et donc avec la ligne de commande suivante, j'ai une autre (…)

Forum Programmation.shell Isoler une chaine de caractère et compter son nombre d'occurrences

Posté par  . Licence CC By‑SA.
Étiquettes :
1
4
juin
2014

Hello,

Je cherche un moyen d'extraire d'une capture de mon trafic DNS certains sites et d'en afficher le nombre d’occurrence.

Le fichier que je récupère est sous ce format :

14:15:37.837411 IP 109.215.228.235.23582 > 81.253.149.2.53: 25335+ A? b.fc.namequery.com. (36)
14:15:37.837930 IP 80.10.202.65.30568 > 209.53.113.4.53: 59709 [1au] A? b.fc.namequery.com. (47)
14:15:44.746399 IP 109.215.90.49.1024 > 81.253.149.2.53: 7376+ A? search.namequery.com. (38)
14:15:49.456342 IP 82.121.161.41.1024 > 81.253.149.1.53: 26292+ A? search.namequery.com. (38)
14:15:49.456865 IP 80.10.202.103.3499 > 209.53.113.6.53: 27871 [1au] A? search.namequery.com. (49)
14:15:53.477188 IP 90.21.150.38.1024 (…)

Forum Programmation.shell Vérifier vos scripts SHELL avec shellcheck

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
6
16
avr.
2014

Bonjour a tous,

je viens de découvrir un petit outil sympathique qui permet de vérifier la synthase, les erreurs de codes ou encore si votre script est optimisé ou pas!

http://www.shellcheck.net/

J'ai pu tester l'outil et je le trouve absolument génial!!

Le test sur mon blog:

http://journaldunadminlinux.fr/verifier-vos-scripts-shell-avec-shellcheck/

Bonne journée a tous!!

Journal Chronique de Wikidata : Esprit Unix appliqué aux données, et plus encore.

Posté par  . Licence CC By‑SA.
16
12
avr.
2014

La fonctionnalité officielle de requêtage de Wikidata se fait attendre. Qu'à cela ne tienne, Magnus Manske, dont la liste de titre et d'accomplissements pour Mediawiki ferait pâlir un chevalier de la table ronde, a créé Wikidata Query, qui rend bien des services. Bon, il a aussi crée pleins d'autres outils, et il en avait marre qu'on lui demande parfois des fonctionnalités similaires sur les outils.

Alors il a eu une idée de génie : fournir un shell Internet javascript (…)

Forum Programmation.shell Faire un ssh après un sudo

Posté par  . Licence CC By‑SA.
Étiquettes :
0
17
mar.
2014

Bonjour,

Je voudrais me connecter à une machineB avec certain user qui n’est accessible qu’après un sudo.

Je peux me connecter à une machineA
ssh machineA
Puis
machineA> sudo su – superman
puis
superman@machineA> ssh machineB

En effet sur la machineB je ne peux pas faire de sudo.
machineA> sudo su – superman ssh machineB
me demande un mot de passe.
machineA> sudo –l
donne
(root) NOPASSWD: /usr/bin/su - superman, (root) /[a-z]*app/travail/*/*.sh

J’ai testé
machineA> sudo su – superman <&lt (…)

Liquidprompt version 1.8

Posté par  (site web personnel) . Édité par Nÿco et claudex. Modéré par patrick_g. Licence CC By‑SA.
29
16
jan.
2014
Ligne de commande

Le Liquid Prompt est un prompt fluide affichant de manière limpide des informations utiles là où vous les verrez : le prompt de votre shell bash ou zsh. Le liquidprompt était déjà bien rempli de fonctionnalités, mais vu la quantité de travail de fond accompli sur la branche de développement, il coulait de source qu'il était temps de sortir une nouvelle version stable.

La version précédente manquait de tests sur les architectures que je ne peux pas tester (MacOS X, *BSD…), mais grâce aux nombreux contributeurs (apparemment pour la plupart francophones) les problèmes ont vite été résolus sur la branche de développement, develop. Grâce au passage de témoin officiel de l'auteur initial, nojhan, j'ai eu les coudées franches pour faire des factorisations plus profondes pour améliorer les performances.

Je profite de cette annonce pour féliciter publiquement deux contributeurs en particulier qui ont participé activement à cette version : François Schmidts et Rolf Morel grâce à des patches décisifs et pour de l'aide à mon travail de mainteneur grâce au défrichage des tickets. Merci !

Liquidprompt version 1.7

Posté par  (site web personnel, Mastodon) . Édité par Benoît Sibaud et Nils Ratusznik. Modéré par Nils Ratusznik. Licence CC By‑SA.
Étiquettes :
42
2
déc.
2013
Technologie

Le Liquid Prompt est un prompt fluide affichant de manière limpide des informations utiles là où vous les verrez : le prompt de votre shell bash ou zsh.

Le liquidprompt était déjà bien rempli de fonctionnalités, mais vu la quantité de travail de fond accompli sur la branche de développement, il coulait de source qu'il était temps de sortir une nouvelle version stable.

Une vague de bugfix (notamment une meilleure compatibilité avec zsh, FreeBSD, OpenBSD et OS X) mais surtout un torrent, que dis-je, un raz-de-marée, d'optimisations (notamment dans les dépôts mercurial ou bazaar) écoulées par le nouveau mainteneur, Olivier Mengué.

Quelques gouttes de fonctionnalités, également :

  • affichage du temps mis par la dernière commande (s'il dépasse un seuil, dans le plus pur style liquidprompt) ;
  • l'affichage du nombre de lignes modifiées dans les dépôts fossil ;
  • la température affichée est maintenant la moyenne des maximums ;
  • désactivation du support de gestion de version pour l'utilisateur root (plus logique d'un point de vue sécurité).

Je ne voudrais pas trop me mouiller, mais je crois qu'on a là un excellent cru.

Linux Nantes : Initiation de Décembre 2013

Posté par  . Édité par Benoît Sibaud et Florent Zara. Modéré par patrick_g. Licence CC By‑SA.
Étiquettes :
6
18
nov.
2013
Communauté

Les initiations reviennent à Linux Nantes ! La première se déroulera le samedi 14 décembre 2013 au « local associatif Bellamy 17 » de 14h30 à 17h30. Elle concernera le shell UNIX ; elle commencera par un exposé de Stéphane et se terminera par un atelier de travaux pratiques.

Chaque participant(e) est encouragé(e) à apporter son ordinateur, une répartition de prises électriques sera prévue (Pour les ordinateurs NON portables, ne pas oublier écran, clavier, souris, etc.). Pour les nécessités d’organisation, il est demandé de s’inscrire en envoyant dès à présent un e-mail à l’adresse initiations@linux-nantes.org.

Au menu :

  1. Principes du shell UNIX
  2. Guide de survie ou « Comment se repérer et agir dans un système inconnu »
  3. Commandes classiques
  4. Quelques scripts dévoilés
  5. Atelier

Bash Argsparse : mieux gérer sa ligne de commande dans ses scripts.

Posté par  (site web personnel) . Édité par Xavier Teyssier, Benoît Sibaud et ZeroHeure. Modéré par claudex. Licence CC By‑SA.
46
10
oct.
2013
Ligne de commande

Je vous présente une bibliothèque écrite en Shell : bash-argsparse

Bash-argsparse permet une gestion des options de la ligne de commande en plus haut niveau qu'un simple getopt, un peu comme le module argparse de python.

Parmi la liste des fonctionnalités, on trouve :

  • la génération automatique du --help ;
  • la vérification des entrées utilisateurs, soit suivant des énumérations, soit suivant des formats pré-établis (nombres entiers, adresses IP, etc.), soit via des résultats de fonctions définies par le développeur du script ;
  • l'exclusion mutuelle de plusieurs options ;
  • le cumul de valeur par répétition d'une option ;
  • et plein d'aut'trucs.

Forum Programmation.shell Fonctions et alias de même noms, et surcharge d'alias

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
3
5
août
2013

Bonjour,

J'ai deux questions à propos du shell sous GNU/Linux (bash ou zsh).

==> Si un alias et une fonction de même nom existent, comment savoir laquelle sera appelée ?
Ex :

alias rr='echo Hello'
rr () { command echo Hello "$@"; }

Dans ce cas, c'est ennuyeux avec zsh : à la définition de la fonction rr, le nom est remplacé par l'alias, et c'est echo qui va être remplacé par la fonction définie… (et donc, rr world renvoie (…)

Journal Se souvenir de ses alias bash

Posté par  . Licence CC By‑SA.
Étiquettes :
11
28
juil.
2013

Bonjour,

Mes vacances sont finies, demain c'est la reprise, oh que c'est dur. Durant mes quelques semaines de farniente, je me suis rendu compte que le fichier de mon shell, bash en l'occurrence (certes avec le mode vi activé) était rempli d'alias et de fonctions : présent en premier lieu pour me simplifier la vie - c'est leur rôles - mais aussi pour stocker des commandes à rallonge utilisées trois fois dans l'année. Cela m'arrive donc d'oublier carrément leur existence. (…)

Forum Programmation.shell Calcul occupation disque dur d'un exécutable

Posté par  . Licence CC By‑SA.
Étiquettes :
0
8
avr.
2013

Bonjour à tous

Pour tracer la consommation disque dur lors de l'exécution d'un logiciel de traitement d'images que l'on développe dans ma boîte, j'ai développé rapidement un petit script shell qui fait à intervalle régulier des "df" et exporte les résultats au format CSV.
De la même façon, pour tracer la consommation CPU j'utilise "top" en mode batch.

Dans les deux cas mes scripts marchent très bien mais je suis confronté à des difficultés :
- le parsing de la (…)

Coloriser des flux de texte avec colout

Posté par  (site web personnel, Mastodon) . Édité par Benoît Sibaud. Modéré par claudex. Licence CC By‑SA.
65
4
avr.
2013
Ligne de commande

Les réalisateurs de films policiers ne s'y trompent pas : lire des flux de textes en ligne de commande nécessite parfois le super pouvoir de lisibilité.

Bien que les outils GNU soient extrêmement pratiques pour manipuler des flux de texte, il en manquait un pour aider à mettre en valeur l'information importante, sans masquer l'accessoire. Par exemple pour faciliter la lecture de logs s'étendant sur plusieurs lignes ou pour détecter rapidement le numéro de ligne d'un fichier responsable d'une erreur de compilation.

Heureusement, grâce à la commande colout (aujourd'hui en version 1.0), vous pouvez maintenant très facilement coloriser colorer colorier mettre de la couleur là où vous le souhaitez dans votre ligne de commande.

Basiquement, colout s'utilise comme un filtre de flux de texte classique, généralement après un pipe, et mets en valeur les bouts de texte correspondant à une expression régulière avec une couleur et un style de votre choix :

    <flux de texte> | colout <expression régulière> [couleur [style]]

L'IHM de colout est pensée pour être simple tout en permettant des utilisations vraiment intéressantes, telles que le coloriage l'application des couleurs sur les groupes des expressions, l'utilisation de cartes de couleurs (mais si, vous savez, les couleurs de l'arc-en-ciel…), la coloration la mise en valeur de la syntaxe de code source, des thèmes automatiques et même l'application d'une couleur en fonction de la valeur d'un nombre.