我的限制IP登录、限制登录时间的shell
发表于:2007-06-08来源:作者:点击数:
标签:
#在个应用户第一行加入:/autodbbk/chk_login.sh||exit #注意权限问题 #reada 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"
#在个应用户第一行加入:/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
| sdclearcase/" target="_blank" >ccf 回复于: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] 放到哪里去了????????????????
|
原文转自:http://www.ltesting.net