Solusi 1:
Anda dapat menggunakan keluaran perintah "w" atau "siapa". Saat Anda terhubung melalui ssh, mereka akan menampilkan IP sumber Anda.
Solusi 2:
Inilah jawaban bagus yang saya temukan di unix.stackexchange:
- Jika salah satu variabel
SSH_CLIENT
atauSSH_TTY
didefinisikan, ini adalah sesi ssh. - Proses induk shell login dapat diperiksa dengan
ps -o comm= -p $PPID
. Jikasshd
, ini adalah sesi ssh.
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
SESSION_TYPE=remote/ssh
else
case $(ps -o comm= -p $PPID) in
sshd|*/sshd) SESSION_TYPE=remote/ssh;;
esac
fi
Solusi 3:
Anda dapat menambahkan SSH_*
ke env_keep
di sudoers
sehingga ini dapat dideteksi saat dialihkan ke pengguna lain.
Solusi 4:
Jika Anda ingin tahu apakah bash shell Anda secara langsung merupakan proses anak dari sshd (tidak sedalam n>1 lapisan), Anda bisa
cat /proc/$PPID/status | kepala -1 | potong -f2
itu akan memberi Anda sshd
atau apa pun nama proses induk dari shell Anda saat ini.
Solusi 5:
Saya pikir Anda ingin memikirkan kembali cara Anda memikirkan masalah. Pertanyaannya bukanlah "apakah saya masuk melalui SSH, karena saya ingin mematikan perintah tertentu." Itu adalah "apakah saya masuk di konsol, karena dengan begitu saya akan mengaktifkan perintah tertentu."