GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann man feststellen, ob es in einer Linux-Konsole oder in einer SSH-Sitzung ausgeführt wird?

ttyname teilt Ihnen den Namen des Terminals mit, das mit einem bestimmten Dateideskriptor verbunden ist; zum Beispiel ttyname(0) wird Ihnen das Terminal von stdin mitteilen.

Dies schlägt natürlich fehl, wenn die Eingabe oder Ausgabe umgeleitet wird.

Abgesehen davon können Sie verschiedene Umgebungsvariablen (SSH_CONNECTION , SSH_CLIENT , REMOTEHOST , DISPLAY , SESSIONNAME ). Wireshark verfügt über eine Logik, um zu erkennen, ob es remote ausgeführt wird, damit es den von ihm generierten Netzwerkverkehr nicht erfasst. Sie könnten an der Logik interessiert sein, die die get_conn_cfilter-Funktion verwendet, um dies zu implementieren.


Wenn Sie den Rückgabewert von ttyname(3) mit Ihrer Standardeingabe vergleichen, sollten Sie den Namen des Terminals erhalten, das die Eingabe Ihres Prozesses speist.

Es wird /dev/console sein, wenn das Programm auf der Konsole ausgeführt wird (und seine Eingabe nicht umgeleitet wird). Sie können auch stdout überprüfen, um zu sehen, ob es mit /dev/console verbunden ist - sehen Sie, was besser zu Ihrem Nutzungsszenario passt.


Ich würde Umgebungsvariablen als vernünftiges Zeichen dafür betrachten, was vor sich geht. Ich bin mir nicht sicher, welche C-API Sie dafür brauchen würden, aber ich bin mir sicher, dass es eine gibt.

Zum Beispiel sowohl die SSH_CLIENT oder SSH_CONNECTION Umgebungsvariablen werden auf meinem Computer unabhängig vom verwendeten SSH-Client festgelegt.

Es kann sich lohnen zu überprüfen, wie universell diese auf dem SSH-Server basieren, der auf dem Computer ausgeführt wird.


Je nachdem, wie sehr Sie sich Sorgen machen, dass es gespooft wird, wäre eine einfache Überprüfung das Vorhandensein/Fehlen der Umgebungsvariablen SSH_CLIENT und SSH_CONNECTION, in diesem Fall würden Sie den getenv wollen Funktion.


Linux
  1. Linux-Umgebungsvariablen:Lesen und Festlegen auf einem Linux-VPS

  2. So ändern Sie den SSH-Port unter Linux

  3. So beenden Sie laufende Prozesse in Linux

  4. So setzen, listen und entfernen Sie Umgebungsvariablen in Linux

  5. So setzen Sie Linux-Umgebungsvariablen mit Ansible

So erstellen Sie einen SSH-Alias ​​unter Linux

So setzen/löschen Sie Umgebungsvariablen in Linux

So setzen und löschen Sie Umgebungsvariablen unter Linux

So melden Sie einen Benutzer unter Linux von SSH ab

Linux-Umgebungsvariablen

So führen Sie SSH zum Server über Linux