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.
Revue des techniques de programmation en shell
Forum Programmation.shell [Résolu] Appel de SSH depuis un Shell script (Bash)
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
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
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!
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.
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
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 << (…)
Liquidprompt version 1.8
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
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
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 :
- Principes du shell UNIX
- Guide de survie ou « Comment se repérer et agir dans un système inconnu »
- Commandes classiques
- Quelques scripts dévoilés
- Atelier
Bash Argsparse : mieux gérer sa ligne de commande dans ses scripts.
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
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
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
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
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.