GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo saber si se ejecuta en una consola de Linux frente a una sesión de ssh?

ttyname le dirá el nombre de la terminal conectada a un descriptor de archivo dado; por ejemplo, ttyname(0) le dirá la terminal de stdin.

Por supuesto, esto fallará si se redirige la entrada o la salida.

Salvo eso, puede verificar varias variables de entorno (SSH_CONNECTION , SSH_CLIENT , REMOTEHOST , DISPLAY , SESSIONNAME ). Wireshark tiene lógica para detectar si se está ejecutando de forma remota para que no capture el tráfico de red que genera; puede que le interese la lógica que usa su función get_conn_cfilter para implementar esto.


Verificar el valor de retorno de ttyname(3) contra su stdin debería darle el nombre de la terminal que está alimentando la entrada de su proceso.

Será /dev/console si el programa se está ejecutando en la consola (y no tiene su entrada redirigida). También puede verificar stdout para ver si está conectado a /dev/console; vea cuál se adapta mejor a su escenario de uso.


Vería las variables de entorno como una señal razonable de lo que está pasando. No estoy seguro de qué API de C querrías para eso, pero estoy seguro de que existe una.

Por ejemplo, tanto el SSH_CLIENT o SSH_CONNECTION las variables de entorno se configuran en mi máquina independientemente del cliente SSH que se utilice.

Puede valer la pena verificar qué tan universales son estos en función del servidor SSH que se ejecuta en la máquina.


Dependiendo de cuánto le preocupe que se falsifique, una verificación fácil sería la presencia/ausencia de las variables de entorno SSH_CLIENT y SSH_CONNECTION, en cuyo caso desearía el getenv función.


Linux
  1. Variables de entorno de Linux:cómo leer y configurar en un VPS de Linux

  2. Cómo matar procesos en ejecución en Linux

  3. Cómo establecer, enumerar y eliminar variables de entorno en Linux

  4. Cómo configurar las variables de entorno de Linux con Ansible

  5. ¿Cómo desconectar la sesión ssh sin matar un proceso en ejecución?

Cómo crear un alias SSH en Linux

Cómo configurar/desconfigurar variables de entorno en Linux

Cómo configurar y desactivar variables de entorno en Linux

Cómo cerrar la sesión de un usuario fuera de SSH en Linux

Variables de entorno de Linux

Cómo SSH al servidor a través de Linux