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_CLIENTatauSSH_TTYdidefinisikan, 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."