Ich habe zwei Benutzer, die aufgrund einer Anwendungsbeschränkung dieselben Anmeldedaten verwenden müssen.
Diese Benutzer haben völlig unterschiedliche Meinungen darüber, wie eine Shell-Eingabeaufforderung aussehen sollte. Einer von ihnen besteht sogar darauf, die Farbpalette zu ändern. Dies hat zu einem .bashrc PS1-Streit geführt. Ich habe ihnen Skripte gegeben, mit denen sie ihre eigenen Einstellungen festlegen können, aber ... sagen wir einfach, es ist kompliziert.
Glücklicherweise stellen beide von Standorten mit bekannten IP-Adressen eine Verbindung her. Gibt es eine Möglichkeit, die Remote-IP-Adresse des Benutzers in eine Bedingung einzubinden und beiden so das zu geben, was sie wollen, ohne dass sie zusätzliche Schritte unternehmen müssen? Sie stellen die Verbindung über SSH her.
Antwort1
Aus dem Handbuch des OpenSSH-SSH-Clients ( man 1 ssh
):
ENVIRONMENT
ssh
setzt normalerweise die folgenden Umgebungsvariablen:[…]
SSH_CONNECTION
Identifiziert die Client- und Server-Enden der Verbindung. Die Variable enthält vier durch Leerzeichen getrennte Werte: Client-IP-Adresse, Client-Portnummer, Server-IP-Adresse und Server-Portnummer.[…]
Sie .bashrc
sollten Folgendes tun:
case "${SSH_CONNECTION%% *}" in
1.2.3.4|1.2.3.5 )
PS1=…
;;
2.2.7.* )
PS1=…
;;
# add support for more users if needed
esac
oder wie
if [ "${SSH_CONNECTION%% *}" = "1.2.3.4" ]; then
PS1=…
else
PS1=…
fi
Antwort2
Wenn die Anmeldung per SSH unter Verwendung von Schlüsseln erfolgt, können Sie Folgendes tun:
myip=`grep 'Accepted publickey for bozo' /var/log/auth.log | tail -1 | awk '{print $11}'`
und vergleichen Sie dann $myip. Wenn sie Passwörter verwenden, ändern Sie sie entsprechend. (Ändern Sie sie auch, wenn ihr Benutzername aus irgendeinem Grund nicht bozo lautet.)
(Dies sollte für Ubuntu und andere Debian-Varianten funktionieren; Speicherort/Name und genaues Format der Authentifizierungsprotokolldatei können bei anderen Varianten abweichen.)