SSH-Parameter zum Ignorieren des .bashrc-Skripts

8

Ich habe einen Server, der beim Start eine Zeile in .bashrcden folgenden Befehl ausführt, der diesen Befehl /bin/watch ~/checker.basherwartungsgemäß beim Start des Servers überwacht.

Ich habe auch einen Client, der sich bei diesem Computer anmeldet, aber ich möchte nicht, dass die Sitzungen des Clients denselben Befehl von der ausführen .bashrc.

Ich habe nach AcceptEnvübergebenen env vars gesucht , obwohl es die Konfiguration des Servers erfordert, die ich vermeiden möchte.

Ich möchte auch nicht 2 verschiedene Benutzerkonten für verschiedene haben .bashrc.

Gibt es einen anderen Winkel, um dies zu erreichen?

ljs.dev
quelle
Warum willst du nicht zwei verschiedene Konten? Alle "Kunden" (die anscheinend nicht mit Dritten in Verbindung stehen) sollten isoliert sein (auch von
Ihnen

Antworten:

5

Sie können Teile von Ihrem .bashrcnur aktivieren, wenn es nicht über aufgerufen wird ssh.

zB so etwas wie:

# within an SSH-session, ${SSH_TTY} will be set
if [ "x${SSH_TTY}" = "x" ]; then
  /bin/watch ~/checker.bash
fi
umläute
quelle
hat wie ein Zauber funktioniert und alle Antworten hier haben mir viel beigebracht. Sehr geschätzt!
ljs.dev
13

Zwei Wege:

Verwenden Sie für diese Sitzung keine Bash, versuchen Sie es mit dash (oder / bin / sh):

ssh 127.0.0.1 /bin/dash

Verwenden Sie bash mit Befehlsoptionen, um die Verarbeitung von Startdateien zu deaktivieren:

ssh 127.0.0.1 "bash --noprofile --norc"
Dan Garthwaite
quelle
Hast du deine Wege ausprobiert? (insb. # 2)?
Umläute
1
Die 2. Methode hängt nur für mich.
slm
5
Die zweite Methode funktioniert perfekt für mich. Sie sehen keine Eingabeaufforderung, da PS1 nicht eingestellt ist. Dies ist ein Nebeneffekt der angeforderten Leistung.
Dan Garthwaite
beide hängen nur für mich
Aditya Mittal
@AdityaMittal Beide scheinen zu hängen, wenn Sie eine interaktive Sitzung aufrufen, da keine PS1-Eingabeaufforderung vorhanden ist. Versuchen Sie, 'ls /'
Dan Garthwaite am
2

Sie können die Zeile / bin / watch .... durch ersetzen

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

oder so etwas.

MariusMatutiae
quelle
ok, toll In diesem Fall kann der watchBefehl mehrere Shells ausführen , aber die Lösung gefällt mir.
ljs.dev