Saya ingin mendeteksi dari skrip shell (lebih khusus .zshrc) jika dikontrol melalui SSH. Saya mencoba variabel HOST tetapi selalu nama komputer yang menjalankan shell. Bisakah saya mengakses nama host tempat sesi SSH berasal? Membandingkan keduanya akan menyelesaikan masalah saya.
Setiap kali saya login ada pesan yang menyatakan waktu login terakhir dan host:
Last login: Fri Mar 18 23:07:28 CET 2011 from max on pts/1
Last login: Fri Mar 18 23:11:56 2011 from max
Ini berarti server memiliki informasi ini.
Jawaban yang Diterima:
Berikut adalah kriteria yang saya gunakan dalam ~/.profile
saya :
- Jika salah satu variabel
SSH_CLIENT
atauSSH_TTY
didefinisikan, ini adalah sesi ssh. - Jika nama proses induk shell login adalah
sshd
, ini adalah sesi ssh.
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
SESSION_TYPE=remote/ssh
# many other tests omitted
else
case $(ps -o comm= -p $PPID) in
sshd|*/sshd) SESSION_TYPE=remote/ssh;;
esac
fi
(Mengapa Anda ingin menguji ini dalam konfigurasi shell Anda daripada memulai sesi Anda?)