salut, On Mon, Aug 25, 2025 at 08:27:09PM +0200, hamster wrote: > > > #!/bin/bash > > dans ce cas, sh (10* moins gros) fait le taff > Merci de l’info. en fait c'est le cas dans 99% des cas et les 1% peuvent vite être contournés. ca fait des années que je n'écris plus de scripts shell qu'avec dash ou rc. > > > set -e > > > echo -ne "\n\nle tunnel est ouvert\n\nmaintenance@honeypot:~$ " > > > > * rend ton script modulaire et partage le > > Je comprend meme pas ce que tu veux dire par "rend modulaire". je voulais dire: rend le générique. si tu écris echo tunnel for luke@deathstar l'info n'est pertinente que dans ton cas par contre echo tunnel for $(whoami)@$(hostname) va marcher pour tout le monde > Pour ce qui est du partage, c’est mon intention, je suis en cours de > rédaction de documentation sur ce que j’ai fait pour publier le tout. so do I :) > J’ai aussi une part de modestie : je suis conscient de mon niveau très > bas en scripts bash et que j’ai fait ca sans bien connaitre les bonnes > pratiques. je fais pareil: je partage mon code en me disant que: * ca peut servir à qq1 * c'est une base de discussion pour améliorer les choses. > J’hésite donc a partager un truc dont je ne sais meme pas si il > ne contient pas une erreur de débutant ou faille de sécurité béante que > j’ignore. ben demander une relecture sur cette liste ou sur unix[unix] me parait une bonne idée. > > * utilise un heredoc quand tu fais du multiligne > Je connais pas heredoc. Man heredoc ne me donne rien. Je suis allé cherche here-doc-text dans man dash. c'est le système de template interne au shell. dans mon exemple, ceci est un heredoc <<% cat le tunnel avec $(whoiam)@$(hostname) est ouvert * saisir ctrl-d pour quitter le tunnel * inutile de tapper des commandes: ce shell est un cat amélioré % > de la doc la dessus sur internet et je trouve pas du tout la syntaxe que > tu utilise. Je trouve des trucs avec un ">" au début de chaque ligne. Je > m’y perd dans tout ca, comment on fait pour savoir quelle est la bonne > version et ou est la doc pour cette version ??? je suis pas sur d'avoir compris le sens de ta question. tu veux dire "comment trouver la doc du shell"? man dash > > * les messages pour les humains sont a écrire sur stderr (2) > > et non sur stdout (1) > Ah, je savais pas. oui c'est une erreur de plus en plus courrante mais imagine un script qui écrit un tsv sur &1 (stdout). si tu écris tes messages au meme endroit echo "traitement en cours" et que bob tape tonscript > final.tsv il va se retrouver avec un "traitement en cours" en plein milieu du tsv. si tu fais: >&2 echo "traitement en cours" bob va voir tonscript > final.tsv traitement en cours et ton tsv sera tout propre. c'est la regle 2 de McIlroy [doug] unix: https://groupes.renater.fr/sympa/subscribe/unix doug: https://en.wikipedia.org/wiki/Unix_philosophy > > > read commande > > > commande="$(echo $commande|cut -d' ' -f1)" > > > echo -e "bash: $commande : commande introuvable" > > > exit 0 > > > ---------------- > > > > pourquoi capturer à chaque ligne ??? > Je comprend pas "capturer a chaque ligne". Je n’ai utilisé "read" qu’une > seule fois. Comme tu vois mon niveau en script bash est "grand débutant". je suis allé un peu vite: ca n'est pas une boucle while :) en fait il exite au premier read. > > <<% cat > > > > le tunnel avec $(whoiam)@$(hostname) est ouvert > > * saisir ctrl-d pour quitter le tunnel > > * inutile de tapper des commandes: ce shell est un cat amélioré > > > > % > > cat > > Merci pour ces améliorations. Je pige pas pourquoi tu remet cat a la fin ? pour la même raison que du fais read: maintenir la connexion en vie. sauf que dans ton cas l'utilsateur tappe enter alors que ma version nécessite un ctrl-d. je me dis que enter ca peut être tappé un peu impulsivement et du coup la connexion se coupe. ctrl-d il faut vraiment le faire exprès. > > les mots de passe ça fait chier bob en général. > Oh oui, ca c’est très vrai. ah! tu vois? on connais le même ;) > > par contre ce que tu > > peux faire c'est avoir un mécanisme simple d'autorisation au debut de > > ton script. un truc du genre > > > > [ -e ~maintenance/welcome ] || { > > >&2 echo pas de maintenance hui > > exit 1 > > } > Alors la, je pige que dalle. Merci quand meme pour la suggestion, si un > jour j’ai assez progressé pour la comprendre je l’utiliserai. [ -e ~maintenance/welcome ] # le fichier existe || # ou alors { # j'affiche un message d'erreur >&2 echo pas de maintenance hui # et je retourne une valeur fausse exit 1 } si tu mets ca en début de script tu peux faire: touch ~maintenance/welcome pour accepter les connexions rm ~maintenance/welcome pour refuser les connexions > Mais du coup je pige pas ton usage de tmux. > > Pour partager une session ce que j’ai trouvé c’est : > - l’autre utilisateur, depuis son compte, lance : > tmux new-session -s toto meme pas besoin de nommer la session (si bob me demande de l'aide, je doute qu'il utilise tmux). * moi je fais juste `tmux` pour créer une nouvelle session * bob peut faire `tmux att` et comme ca on "partage l'écran" > ca se fait tout seul dans un script quand il lance le mécanisme de > controle a distance bah moi je prefere ne pas mettre trop d'intelligence dans le script de maintenance: ca doit rester simple et souple. > - Je me connecte en ssh. > - J’utilise sudo su bob pour devenir lui. > - Je lance : > tmux attach-session -t toto perso je me connecte directement en bob. j'ai pas de compte spécifique. > la aussi je me suis fait un script pour pas avoir a taper un truc aussi > compliqué. ben tmux et tmux att sont des commandes aux longueurs acceptables pour moi, perso. > Visiblement ce que tu fais est beaucoup plus simple. Est-ce que tu a pas > tout mis ? Ou bien est-ce que j’ai vraiment très mal cherché quand j’ai > cherché comment partager un terminal ? non: je me sers juste de l'implicite que permet le comportement par defaut en me disant que si jamais bob se met a utiliser tmux, je ferais plus long a ce moment là. ta version est donc plus robuste. moi j'ai été récompensé par ma flemme puisque de fait, mes bobs ne sont pas des tmuxiens. a+ -- Marc Chantreux Pôle CESAR (Calcul et services avancés à la recherche) Université de Strasbourg 14 rue René Descartes, BP 80010, 67084 STRASBOURG CEDEX 03.68.85.60.79
Attachment:
signature.asc
Description: PGP signature