请问在sco openserver 5.0.5中.如何控制终端的登录.采用的是网络终端.就是用这个ip地址的终端只能用业务前台的用户名登录.而不能用其它用户名登录.不采用密码.有什么方法.我的想法是:对于己于192.168.0.1-192.168.0.30这一网段内的终端只能用用户1和用户2登录到主机.而192.168.0.31-192.168.0.60这一网段的终端只能用用户3和用户4登录主机.如果操作人员在终端上输入了并不是该终端所属网段的用户,则就让它不能登录.其它的网段的终端以此类推.能给出代码最好啦.
| styr 回复于:2005-05-10 14:42:42 |
| 上次见过这贴子,不过后来沉了,呵呵
我也是初学者,学着做了一个,帮助拍拍砖啊 $cat test.sh [code:1:2cbbaeac6a]#!/bin/ksh trap "" 1 2 3 15 youtty=`tty | tr -d "/dev/ttyp"` youname="$LOGNAME" iptest=$(awk '{if ($2=='$youtty') print $1 }' ip | awk -F"." '{print $4}' ) if [ "$iptest" -eq 0 ] then echo "无此用户" exit -1 else if [ "$iptest" -ge 1 -a "$iptest" -le 30 ] then if [ "$youname" = "user1" -o "$youname" = "user2" ] then echo "欢迎登录\n" else echo "本终端只能由user1或user2进入.\n" exit -1 fi else if [ "$iptest" -ge 31 -a "$iptest" -le 60 ] then if [ "$youname" = "user3" -o "$youname" = "user4" ] then echo "欢迎登录\n" else echo "本终端只能由user3或user4进入.\n" exit -1 fi fi fi fi [/code:1:2cbbaeac6a] 先建一个文本文件ip,内容为IP地址 终端号,如 192.168.0.1 1 192.168.0.30 2 192.168.0.60 60 .... 把这个sh加在.profile里应该可以了 根据做好的ip文件先判断登录的终端号是否存在,再判断IP地址是否合法,再是判断登录用户名.呵呵,老大们砍吧................. |
| CNL 回复于:2005-05-10 16:16:34 |
| [quote:9b30ad2aa3="styr"]先建一个文本文件ip,内容为IP地址 终端号,如
192.168.0.1 1 192.168.0.30 2 192.168.0.60 60 .... 把这个sh加在.profile里应该可以了 根据做好的ip文件先判断登录的终端号是否存在,再判断IP地址是否合..........[/quote:9b30ad2aa3] 逻辑很清楚、流畅,不错, 实现看来是要在网络终端号绑定的基础上才行 |
| styr 回复于:2005-05-10 18:10:17 |
| 我只在家里用VM试了试,应该还可以用的,那个IP文件权根最好是root的755
因为我们局的终端都是绑定了的,所以只能那样做了.如果没绑定,基本上是可以用的,只不过取IP值要麻烦些了 :-( :em17: |
| giggle5 回复于:2005-05-19 16:45:51 |
| 研究了很长时间,就是看不明白二楼的代码.二楼能不能说一下,偶是一SHELL程序菜鸟. |
| giggle5 回复于:2005-05-20 14:09:20 |
| 研究了很长时间,就是看不明白二楼的代码.二楼能不能说一下,偶是一SHELL程序菜鸟. |
| styr 回复于:2005-05-20 17:12:01 |
| 说说当然可以的,也请老大们拍拍砖啊,帮忙改进一下
#!/bin/ksh trap "" 1 2 3 15 #禁止按del等中断 youtty=`tty | tr -d "/dev/ttyp"` #取终端登陆的TTY号 youname="$LOGNAME" #取终端登陆的用户名 iptest=$(awk '{if ($2=='$youtty') print $1 }' ip | awk -F"." '{print $4}' ) #取与IP文件中相同TTY号的IP地址最后一段IP if [ "$iptest" -eq 0 ] then echo "无此用户" #如没找到预先设定的TTY号,则判断为非法TTY并退出 exit -1 else if [ "$iptest" -ge 1 -a "$iptest" -le 30 ] #判断IP 地址是否在192.168.0.1-192.168.0.30这一网段内 then if [ "$youname" = "user1" -o "$youname" = "user2" ] then echo "欢迎登录\n" #判断用户名是否为 user1 或 user2 else echo "本终端只能由user1或user2进入.\n" exit -1 fi else if [ "$iptest" -ge 31 -a "$iptest" -le 60 ] then if [ "$youname" = "user3" -o "$youname" = "user4" ] then echo "欢迎登录\n" #判断用户名是否为 user1 或 user2 else echo "本终端只能由user3或user4进入.\n" exit -1 fi fi fi fi 呵呵,水平有限,我也是初学shell的,大家多指教啊 :em06: |
| fl.w 回复于:2005-06-15 08:19:27 |
| 已经很厉害了!! |
| styr 回复于:2005-06-15 09:43:24 |
| 这是绑定了tty的,所以还好做,
没绑定tty的就难点了,判断IP和tty的对应关系就很麻烦了,呵呵 留给老大们去做了 :em05: |