• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

我的限制IP登录、限制登录时间的shell

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 43次 | 进入软件测试论坛讨论

领测软件测试网
#在个应用户第一行加入:/autodbbk/chk_login.sh || exit
#注意权限问题

#read a
TTY=`tty | cut -f3 -d'/'` #取终端号
IP=`who -x| grep "$TTY "|cut -b38-52|cut -f1,2,3 -d'.' ` #取IP前3个字节
N=`who -x | grep "$IP." |cut -f1 -d' '|grep $LOGNAME|wc -l` #取用户数
MAXTERM=`grep "$IP." /autodbbk/term_num.txt|grep $LOGNAME|cut -f3` #取最大用户数
echo "您所在公司最多可以登录$MAXTERM个终端,你是第$N位用户 ! "
TIME=`date '+%Y%m%d-%H:%M:%S'`
#w -x | awk -F ' ' -f /autodbbk/outtime.awk |grep ":"|grep "$IP"
w -x | awk -F ' ' -f /autodbbk/outtime.awk |grep ":"|grep "$IP"
echo "$TIME $LOGNAME $MAXTERM $IP" >>count.log

#注册超时检查
if [ ! "$MAXTERM" ] #检查非授权网络的登录
then echo "Error IP !"
     IP=`who -x| grep "$TTY "|cut -b38-52|cut -f1,2,3,4 -d'.' ` #取IP全址
     TIME=`date '+%Y%m%d-%H:%M:%S'`
     #echo "$TIME $IP $LOGNNAME" >>log
     exit 1
fi
if [ $N -gt "$MAXTERM" ] #检查是否超额定注册数
then
  echo ""
  echo "你公司最多注册$MAXTERM个终端,您现在是第$N个用户,您可以按下面的"
#  echo "方法试着登录:"
#  echo "    现在应业务中心要求,暂停基层公司登录,如有疑问,请与该部门联系!!"
  echo "                              "
  echo "                              2002年1月1日"
    exit 2
fi

TIME=`date '+%H%M'`
if [ $TIME -lt 0730 -o $TIME -gt 2300 ] #检查是否在许可工作时间
then
  echo "\n\n"
  echo "各位单位用户:\n"
  echo "系统正在进行数据备份、日终、日初操作,约零晨 2:30 以后系统恢复\n"
  echo "正常,如有特殊情况需夜间使用系统,请及时通知中心机房系统管理员。\n"
  echo "电话 \n\n"
  echo "                                         \n"
  echo "                                         2001年6月4日\n"
  exit 3
fi

#echo "系统优化,约需10~20分钟,可相对加快速度,请稍等..."
#exit 4



#下面是term_num.txt文本示例
#用户名 网络地址 最大用户数

root 18.129.32. 9

 sdccf 回复于:2003-03-11 10:15:26
太好了,需要这样的文章来充实论坛。谢谢!

 oapthyok 回复于:2003-03-11 10:33:09
马上试一下,谢谢楼主!

 zyr2288 回复于:2003-03-11 10:55:00
注意:term_num.txt中要以TAB分隔。论坛画面中无法区分空格与TAB键,请各位调试时一定注意分析一下。

 delayerking 回复于:2003-03-11 11:19:25
UP!

 ncwyj 回复于:2003-03-11 17:05:27
请问“outtime.awk”中的内容怎么写的呢?

 wkl 回复于:2003-03-11 17:51:47
设为精华,慢慢参祥

 ncwyj 回复于:2003-03-11 18:56:52
请问outtime.awk是做什么用得呢?我看了一下后感觉w -x | awk -F ' ' -f /autodbbk/outtime.awk |grep ":"|grep "$IP" 不要也可以呀?请指教!

 bzzyg 回复于:2003-03-11 21:46:06
IP=`who -x| grep "$TTY "|cut -b38-52|cut -f1,2,3 -d'.' `
这样能求出你的IP吗?我的sco unix怎不行?

 ncwyj 回复于:2003-03-11 22:17:27
IP=`who -x| grep "$TTY "|cut -b38-52|cut -f1,2,3 -d'.' ` 显示的是你的IP网段,其实只要IP=`who -x|cut -b38-52 `就可显示出你的IP,但前题你是从终端登录。

 zyr2288 回复于:2003-03-12 09:51:57
这个shell是我两年前作的,两年来多次修改,当然其有很多地方其实有更好的取值方法。
bzzyg、ncwyj 讲得就很好,其实在后来我的shell更推崇使用awk,该命令对字段的取得比用cut -f 或 cut -b 更好,且可以一次性取得一行中的多个参数。有兴起的话您可以优化它。

其实这个shell不只可以限定网段,只要稍稍改一下,就可以限定到具体的网址。作成网段限定主要是我闲给各基层单位一个个设定IP太费事。

outtime.awk中内容:
BEGIN{
    }
    {
        printf "来自%s的%s已闲置%s小时,请转告其退出系统。谢谢 !!\n",$7,$2,$4
    }
END {
    }

 ncwyj 回复于:2003-03-12 10:11:16
没错,昨晚我试过了,不好意思!我也是最近刚学shell,以后还请大侠多指教了!谢谢老大的好东东。

 zyr2288 回复于:2003-03-12 10:27:36
为方便大家,我把所有相关的文件打了个包(我发贴时没注意,发的是旧版的)。哪位给个地址放上去(14K),让大家直接下载,免得调试。请别跟我说发邮件,我懒!!!

 ylpsb 回复于:2003-06-19 22:40:55
没下落了?关注此帖。。。

 li2002 回复于:2003-06-20 08:23:48
放到ftp://cwqu.3322.org/ 吧

 xtnx-wb 回复于:2003-06-23 09:36:00
[quote:5bb2f150fe="zyr2288"]为方便大家,我把所有相关的文件打了个包(我发贴时没注意,发的是旧版的)。哪位给个地址放上去(14K),让大家直接下载,免得调试。请别跟我说发邮件,我懒!!![/quote:5bb2f150fe]     放到哪里去了????????????????

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网