Shell脚本 - 编程进阶03

1、每隔 3 秒钟到系统上获取已经登录的用户的信息;如果发现用户 hacker 登录,则将登录时间和主机记录于日志 /var/log/login.log 中,并退出脚本;
  • 脚本
#!/bin/bash
while :
do
    echo "<----`date +'%F %T'`----No Information !---->"
    if [[ `who | grep hacker` ]]
    then
        echo User Hacker was logined in `date +'%F %T'` | tee /var/log/login.log                             
        break
    fi  
    sleep 3
done
  • 执行结果
[root@centos7 ~]# ./login.sh
<----2020-06-02 10:36:55----No Information !---->
User Hacker was logined in 2020-06-02 10:36:55

[root@centos7 ~]# cat /var/log/login.log 
User Hacker was logined in 2020-06-02 10:36:55
2、随机生成 10 以内的数字,实现猜字游戏,提示比较大或小,相等则退出;
  • 脚本
#!/bin/bash
NUM=$[$RANDOM%10]
while :
do
	read -p "Please Guess:" N
	if [ $N -lt $NUM ]
	then
		echo "to little ! again."
	elif [ $N -gt $NUM ]
	then
		echo "to large ! again."
	else	
		echo "Congritulation !!!"
		break
	fi
done

  • 执行结果
[root@centos7 ~]# ./guess.sh
Please Guess:5
to little ! again.
Please Guess:8
to little ! again.
Please Guess:9
Congritulation !!!
3、用文件名做为参数,统计所有参数文件的总行数;
  • 脚本(未判断参数是否为文件)
#!/bin/bash
SUM=0
while [ $1 ]
do
	i=`cat $1 | wc -l`
	let SUM+=i
	shift
done
echo $SUM
  • 执行结果
[root@centos7 ~]# ./file_count.sh /etc/fstab /etc/resolv.conf /etc/chrony.conf 
50
4、用二个以上的数字为参数,显示其中的最大值和最小值。
  • 脚本
#!/bin/bash
MAX=$1
MIN=$1
[[ $# -lt 2 ]] && echo 指定的参数太少。 && exit
while [ $1 ]
do
    [ $1 -gt $MAX ] && let MAX=$1
    [ $1 -lt $MIN ] && let MIN=$1
    shift
done
echo MAX:$MAX,MIN:$MIN
  • 执行结果
[root@centos7 ~]# ./maxmin.sh
指定的参数太少。
[root@centos7 ~]# ./maxmin.sh 10
指定的参数太少。
[root@centos7 ~]# ./maxmin.sh 10 100 1000
MAX:1000,MIN:10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值