GNU/Linux >> Znalost Linux >  >> Linux

Jak zjistit, zda běží v linuxové konzoli oproti relaci ssh?

ttyname vám řekne jméno terminálu připojeného k danému deskriptoru souboru; například ttyname(0) vám sdělí terminál stdin.

To samozřejmě selže, pokud je přesměrován vstup nebo výstup.

Kromě toho můžete zkontrolovat různé proměnné prostředí (SSH_CONNECTION , SSH_CLIENT , REMOTEHOST , DISPLAY , SESSIONNAME ). Wireshark má logiku, aby zjistil, zda je spuštěn vzdáleně, takže nezachycuje síťový provoz, který generuje; možná vás bude zajímat logika, kterou jeho funkce get_conn_cfilter používá k implementaci.


Kontrola návratové hodnoty ttyname(3) proti vašemu stdin by vám měla poskytnout jméno terminálu, který přivádí vstup vašeho procesu.

Bude to /dev/console, pokud je program spuštěn na konzole (a nemá přesměrován vstup). Můžete také zkontrolovat stdout a zjistit, zda je připojen k /dev/console – podívejte se, který scénář lépe vyhovuje vašemu scénáři použití.


Díval bych se na proměnné prostředí jako na rozumné znamení toho, co se děje. Nejsem si jistý, jaké C API byste pro to chtěli, ale jsem si jistý, že nějaké existuje.

Například SSH_CLIENT nebo SSH_CONNECTION proměnné prostředí jsou na mém počítači nastaveny bez ohledu na používaného klienta SSH.

Možná by stálo za to zkontrolovat, jak univerzální jsou tyto založeny na serveru SSH běžícím na počítači.


V závislosti na tom, jak moc se obáváte, že bude falešný, bude snadná kontrola přítomnosti/nepřítomnosti proměnných prostředí SSH_CLIENT a SSH_CONNECTION, v takovém případě budete chtít getenv funkce.


Linux
  1. Proměnné prostředí Linux:Jak číst a nastavovat na Linux VPS

  2. Jak zabít běžící procesy v Linuxu

  3. Jak nastavit proměnné prostředí Linuxu pomocí Ansible

  1. Jak změnit port SSH v Linuxu

  2. Jak nastavit/vytvořit proměnné prostředí a prostředí v Linuxu

  3. Jak ukončit nereagující připojení SSH v linuxu?

  1. Jak nastavit, vypsat a odebrat proměnné prostředí v Linuxu

  2. Příklady exportních příkazů pro Linux (jak nastavit proměnné prostředí)

  3. Jak odpojit relaci ssh bez zabití běžícího procesu?