日期:2014-05-16  浏览次数:21073 次

SHELL如何区分serial console login还是telnet login?
同题!Thanks!

------解决方案--------------------
下面的的脚本可以参考,对不同的系统需要稍稍修改:
#!/bin/sh

_tty=`tty`

case ${_tty} in
*[Tt][Tt][Yy][Ss]*)
echo "serial console "

;;
*[Tt][Tt][Yy][Pp]* | *[Pp][Tt][Ss]*)
echo "telnet login "
;;

*[Tt][Tt][Yy][Vv]* | console)
echo "console "
;;

*)

;;
esac
------解决方案--------------------
1楼好像是通过/dev/pts来判断的

不过/dev/pts是远程登陆(telnet,ssh等)后创建的控制台设备文件所在的目录。印象中/dev/pts是动态生成的,所以对功能性有点怀疑....

至少不能分辨是telnet还是ssh登录吧.....
------解决方案--------------------
name= "pts/`basename \`tty\`` "
echo $name

flag=`who|grep $name|awk '{print $6} '`
echo $flag

if [ $flag = "(:0.0) " ]
then
echo "loca "
else echo "other:telnet or ssh .... "
fi