GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengetahui apakah berjalan di konsol linux versus sesi ssh?

ttyname akan memberi tahu Anda nama terminal yang terhubung ke deskriptor file tertentu; misalnya, ttyname(0) akan memberi tahu Anda terminal stdin.

Ini tentu saja akan gagal jika input atau output dialihkan.

Kecuali itu, Anda dapat memeriksa berbagai variabel lingkungan (SSH_CONNECTION , SSH_CLIENT , REMOTEHOST , DISPLAY , SESSIONNAME ). Wireshark memiliki logika untuk mendeteksi jika dijalankan dari jarak jauh sehingga tidak menangkap lalu lintas jaringan yang dihasilkannya; Anda mungkin tertarik dengan logika yang digunakan fungsi get_conn_cfilter untuk mengimplementasikan ini.


Memeriksa nilai pengembalian ttyname(3) terhadap stdin Anda akan memberi Anda nama terminal yang memasukkan input dari proses Anda.

Itu akan menjadi /dev/console jika program dijalankan di konsol (dan inputnya tidak dialihkan). Anda juga dapat memeriksa stdout untuk melihat apakah itu terhubung ke /dev/console - lihat mana yang lebih cocok dengan skenario penggunaan Anda.


Saya akan melihat variabel lingkungan sebagai tanda yang masuk akal tentang apa yang terjadi. Saya tidak yakin C API apa yang Anda inginkan untuk itu, tapi saya yakin ada.

Misalnya, baik SSH_CLIENT atau SSH_CONNECTION variabel lingkungan disetel di mesin saya terlepas dari klien SSH yang digunakan.

Mungkin ada baiknya memeriksa seberapa universal ini didasarkan pada server SSH yang berjalan di mesin.


Bergantung pada seberapa besar Anda khawatir tentang hal itu dipalsukan, pemeriksaan yang mudah adalah untuk ada/tidaknya variabel lingkungan SSH_CLIENT dan SSH_CONNECTION, dalam hal ini Anda menginginkan getenv fungsi.


Linux
  1. Variabel Lingkungan Linux:Cara Membaca dan Mengatur di VPS Linux

  2. Cara Membunuh Proses yang Berjalan di Linux

  3. Cara Mengatur, Mendaftar, dan Menghapus Variabel Lingkungan di Linux

  1. Cara Mengubah Port SSH Di Linux

  2. Bagaimana cara mengakhiri koneksi SSH yang tidak responsif di linux?

  3. Bagaimana cara melepaskan sesi ssh tanpa mematikan proses yang sedang berjalan?

  1. Cara Mengatur/Membuat Variabel Lingkungan dan Shell di Linux

  2. Contoh Perintah Ekspor Linux (Cara Mengatur Variabel Lingkungan)

  3. Cara mengatur variabel lingkungan Linux dengan Ansible