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?


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

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"

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.


ok, toll In diesem Fall kann der watchBefehl mehrere Shells ausführen , aber die Lösung gefällt mir.
ljs.dev
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.