#在个应用户第一行加入:/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/