Ich habe ein Shell-Skript, das eines tun soll, wenn der Benutzer den Computer physisch verwendet, und eines, wenn der Benutzer über SSH angemeldet ist.
Wie würde ich dabei vorgehen?
Genauer gesagt, mein normaler Rechner ist OS X und dort möchte ich einen grafischen OS X-Editor (BBEdit) als EDITOR verwenden. Wenn ich mich jedoch von meinem Netbook aus per SSH mit meinem Mac verbinde, möchte ich vim verwenden – ich habe keine grafische Verbindung zu meinem Mac.
Danke!
Antwort1
Sie sollten die Umgebungsvariablen SSH_CONNECTION, SSH_TTY oder DISPLAY verwenden können.
Sehen: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 auch eine Option, wird aber nicht auf der Manpage angezeigt.
Antwort2
Vergleichen Sie Ihre env
lokale Anmeldung und die Anmeldung über SSH.
Ich habe zB SSH_CONNECTION
, SSH_CLIENT
, SSH_TTY
die nur bei Anmeldung über SSH definiert sind.
Antwort3
Ich glaube, /var/run/utmpx (siehe „man utmpx“) enthält diese Informationen. Wenn Sie „who“ ausführen, sehen Sie, dass der Befehl who feststellen kann, ob Sie von einem Remote-Knoten aus verbunden sind (und sogar weiß, von wo aus Sie verbunden sind).
Sie können also immer den Befehl „who“ verwenden und die Ausgabe bearbeiten, um dies zu ermitteln.
Hinweis: Ich glaube, dass die obigen Antworten (zur Verwendung von SSH_CONNECTION) eine bessere Lösung darstellen.