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?

ljs.dev
la source
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
umläute
la source
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"
Dan Garthwaite
la source
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.

MariusMatutiae
la source
OK super. Dans ce cas, je peux avoir plusieurs shells exécutant la watchcommande, mais j'aime la solution.
ljs.dev