Wissen Sie, dass der Benutzer von einem Shell-Skript aus sshingt?

2

Ich habe ein Shell-Skript, das ich ausführen möchte, wenn der Benutzer den Computer physisch verwendet, und wenn der Benutzer über SSH angemeldet ist.

Wie würde ich das machen?

Genauer gesagt, meine normale Maschine ist OS X, und dort möchte ich einen grafischen OS X-Editor (BBEdit) als EDITOR verwenden. Wenn ich jedoch von meinem Netbook aus SSH auf meinen Mac starte, möchte ich vim verwenden - ich habe keine grafische Verbindung zu meinem Mac.

Vielen Dank!

RyanWilcox
quelle

Antworten:

2

Sie sollten in der Lage sein, die Umgebungsvariablen SSH_CONNECTION, SSH_TTY oder DISPLAY zu verwenden.

Siehe: http://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/ssh.1.html

 SSH_CONNECTION        Identifies the client and server ends of the connection.  The variable contains
                       four space-separated values: client IP address, client port number, server IP
                       address, and server port number.

Bearbeiten: SSH_CLIENT ist ebenfalls eine Option, wird jedoch nicht in der Manpage angezeigt.

Karolos
quelle
GENIAL! Vielen Dank für Ihren Link zur SSH-Manpage!
RyanWilcox
1

Vergleichen Sie Ihre envlokalen und wenn Sie über SSH angemeldet sind.

Ich habe zum Beispiel SSH_CONNECTION, SSH_CLIENT, SSH_TTY, die nur im eingeloggten via SSH definiert.

Daniel Beck
quelle
Du hast mich ein paar Sekunden geschlagen;)
Karolos
@ Karolos See, du hast immer noch das Häkchen für die gründlichere Antwort;)
Daniel Beck
Ich bin neu hier, daher bin ich es nicht gewohnt zu glauben, dass sich auch mehrere Leute das ansehen, während ich antworte;)
Karolos
0

Ich glaube, / var / run / utmpx (siehe "man utmpx") hat diese Informationen. Wenn Sie "who" ausführen, sehen Sie, dass der who-Befehl erkennen kann, ob Sie von einem Remote-Knoten aus verbunden sind (und sogar weiß, von wo aus Sie eine Verbindung hergestellt haben).

Sie können also jederzeit den Befehl who verwenden und die Ausgabe massieren, um dies zu bestimmen.

Hinweis: Ich glaube, die obigen Antworten (zur Verwendung von SSH_CONNECTION) sind eine bessere Lösung.

Lee-Man
quelle
Die utmpxDatei (allgemeiner genannt utmp) hat bereits ein genau definiertes Format. Es ist besser, es direkt zu lesen als zu analysieren who, da letzteres nicht immer konsistent ist.
Grawity
1
Gwawity: Ich bin nicht einverstanden mit einem Shell-Skript. Wenn ich das aus Python oder C heraus mache, würde ich dem zustimmen, aber aus einem Shell-Skript heraus würde ich dagegen argumentieren, diese (binäre) Datei direkt zu analysieren. Andere haben jedoch vorgeschlagen, die Umgebungsvariablen SSH_ * zu verwenden, was eine bessere Antwort ist.
Lee-Man
Benachrichtigung von @grawity über eine Antwort.
Daniel Beck