Paramètre SSH pour ignorer le script .bashrc


8

J'ai un serveur qui, lorsqu'il démarre, une ligne dans .bashrcexécute la commande suivante /bin/watch ~/checker.bashqui, comme prévu, regarde cette commande au démarrage du serveur.

J'ai également un client qui se connecte à cette machine, mais je ne veux pas que les sessions du client exécutent la même commande à partir du .bashrc.

J'ai regardé AcceptEnvpour passer les vars env, bien que cela nécessite une configuration du serveur, que je veux éviter.

Je ne veux pas non plus avoir 2 comptes d'utilisateurs différents pour différents .bashrc.

Y a-t-il un autre angle pour aborder cela?


pourquoi ne voulez-vous pas deux comptes différents? tous les "clients" (qui semblent être des tiers indépendants) doivent être isolés (également de vous-même)
umläute

Réponses:


5

vous ne pouvez activer certaines parties de votre fichier .bashrcque s'il n'est pas appelé via ssh.

par exemple quelque chose comme:

# within an SSH-session, ${SSH_TTY} will be set
if [ "x${SSH_TTY}" = "x" ]; then
  /bin/watch ~/checker.bash
fi

travaillé comme un charme et toutes les réponses ici m'ont beaucoup appris. Très appréciée!
ljs.dev

13

Deux façons:

N'utilisez pas bash pour cette session, essayez dash (ou / bin / sh):

ssh 127.0.0.1 /bin/dash

Utilisez bash avec les options de commande pour désactiver le traitement des fichiers de démarrage:

ssh 127.0.0.1 "bash --noprofile --norc"

as-tu essayé tes moyens? (surtout # 2)?
umläute

1
La 2ème méthode ne tient qu'à moi.
slm

5
La deuxième méthode fonctionne parfaitement pour moi. Vous ne voyez pas d'invite car la PS1 n'est pas définie, ce qui est un effet secondaire de l'exécution comme demandé.
Dan Garthwaite

tous les deux pendent pour moi
Aditya Mittal

@AdityaMittal Les deux semblent se bloquer si vous appelez une session interactive car il n'y a pas d'invite PS1. Essayez de taper 'ls /'
Dan Garthwaite

2

Vous pouvez remplacer la ligne / bin / watch .... par

 if ps ax | grep /bin/watch | grep -v grep  > /dev/null 2>&1
 then
    echo "Nothing to do"
 else
    /bin/watch ~/checker.bash
 fi

ou quelque chose comme ça.


OK super. Dans ce cas, je peux avoir plusieurs shells exécutant la watchcommande, mais j'aime la solution.
ljs.dev
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.