Forum Linux.général Script local après ssh clos

Posté par  . Licence CC By‑SA.
Étiquettes :
1
15
avr.
2021

Bonjour,

Si j'ai une machine A qui ouvre un shell ssh sur une machine B.

Je cherche mais ne trouve pas comment lancer un script sur A quand la session ssh vers B se termine (exit propre ou coupure de courant peu importe).

Le top ce serait que ça soit un script général pour toutes mes sessions ssh y compris vers les autres machines.

Si je trouve pas, le truc qui existe déjà, je ferai un script ssh que je mettrai dans mon PATH qui fera passe plat au vrai ssh et qui lancera un autre script après. Il ressemblerait à ça :

#!/bin/bash
# Ici on pourrait mette un truc avant mais c'est pas ce que je veux pour l'instant
/usr/bin/ssh "$@"
# Et après le script si la  connexion de la ligne ci dessus se clos alors le script se lance
~/.ssh/exitrc

La roue est facile a inventer mais comme je n'aime pas la réinventer j'aimerai savoir si ça existe déjà.

PI : Je suis un vil étourdi aussi je veux que dans mon terminal il y ai toujours le nom de la machine écrit en TRÈS GROS au début de mes sessions (le nom de la machine dans l'invite ne me suffit pas).
dans mon .bashrc je mets à la fin :

toilet "${HOSTNAME^^}" -f block -w 1000|sed -e 'sR[_|]R█Rg'

Quand je vais sur une de mes machine ça marche. Mais quand j'en reviens ça ne le fait pas.

D'avance merci.

  • # des pistes

    Posté par  . Évalué à 6.

    à la premiere question, en shell en general, tu as 3 séparateurs
    si ca s'est bien passé : &&
    si ca s'est mal passé : ||
    peut importe ce qu'il s'est passé : ;

    donc ca donne par exemple
    ssh user@machine && action_apres_fermeture.sh

    pour avoir l'action si le ssh se termine bien (code retour 0)

    • [^] # Re: des pistes

      Posté par  . Évalué à 2.

      Merci mais ça m'obligerai à le faire à chaque fois.
      Comme je l'ai dis je suis un vil étourdi. J'ai toute les chances d'oublier.

      Automatiser cela rejoindrait ma proposition, en ajoutant la différenciation des types de retours.

      J’espère une solution, clef en main, comme le fichier .ssh/rc mais chez l'appelant local et à la fermeture.
      J'imagine que ça n'existe pas tout simplement :P

      • [^] # Re: des pistes

        Posté par  (Mastodon) . Évalué à 4. Dernière modification le 16 avril 2021 à 09:03.

        Tu peux peut-être te mettre un alias ou plutôt une fonction dans ton .bashrc ?

        ssh() { env ssh $* && echo "fini"; }

        En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

        • [^] # Re: des pistes

          Posté par  . Évalué à 2.

          +1 pour l'usage de env.

          Je l'avais oublié… Merci

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.