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!
Vergleichen Sie Ihre
env
lokalen und wenn Sie über SSH angemeldet sind.Ich habe zum Beispiel
SSH_CONNECTION
,SSH_CLIENT
,SSH_TTY
, die nur im eingeloggten via SSH definiert.quelle
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.
quelle
utmpx
Datei (allgemeiner genanntutmp
) hat bereits ein genau definiertes Format. Es ist besser, es direkt zu lesen als zu analysierenwho
, da letzteres nicht immer konsistent ist.