shell训练计划30天之第二十天

例41 问候脚本

编写一个问候程序,它执行时能更具系统当前的时间向用户输出问候信息。假设从半夜到中午为早晨,中午到下午六点为下午,下午六点到半夜为晚上

要点:date判断小时

 

 

#!/bin/bash

d=`date +%H`

if [ $d -ge 0 -a $d -lt 7 ]

then

tag=1

elif [ $d -ge 7 -a $d -lt 12 ]

then

tag=2

elif [ $d -ge 12 -a $d -lt 18 ]

then

tag=3

else

tag=4

fi

case $tag in

1)

echo "早上好"

;;

2)

echo "上午好"

;;

3)

echo "下午好"

;;

4)

echo "晚上好"

;;

*)

echo "脚本出错了"

;;

esac

 

 

例42 菜单脚本

要求:写一个shell脚本,实验简单的弹出式菜单的功能,用户根据提示的菜单项从键盘选择执行对应的命令

要点:

case

read或select

 

 

 

使用select

#!/bin/bash

PS3="Please input your choice:"

select i in w ls pwd quit

do

case $i in

w)

w

;;

ls)

ls

;;

pwd)

pwd

;;

quit)

exit

;;

*)

echo "please input 1-3"

;;

esac

done

 

使用read

#!/bin/bash

echo -e "1) w\n2) ls\n3) pwd\n4) quit"

while :

do

read -p "Please input your choice (1-4):" c

case $c in

1)

w

;;

2)

ls

;;

3)

pwd

;;

4)

exit

;;

*) echo "Please input 1-4"

;;

esac

done

 

 

例43 检查用户是否登录

要求:写一个shell脚本,执行中每隔5分钟检查指定的用户是否登录系统,用户名从命令行输入,如果指定的用户已经登录,则显示相关信息

要点:while死循环

用户名需要用户指定

 

#!/bin/bash

while :

do

if w|sed -'1'd|awk '{print $1}'|grep -qw "$1"

then

echo "用户$1已经登录系统"

exit

fi

sleep 300

done

 

 

例44 检车系统是否入侵

要求:先普及一个小常识,我们用ps -aux可以查看到进程的PID,每个PID都会在/proc内产生。如果差看到的pid在proc内是没有的,则进程被人修改了,这就代表系统很有可能已经被入侵过了

请用上面的只是编写一个shell,定期检查自己的系统是否被入侵过

要点:

ps aux 遍历所有piad

cp /proc/ ; -d pid 查看是否有该目录

 

#!/bin/bash

pp=$$

ps -elf |sed '1'd > /tmp/pid.txt

for pid in `awk -v ppn=$pp '$5!=ppn {print $4}' /tmp/pid.txt`

do

if ! [ -d /proc/$pid ]

then

echo "系统本身并没有pid为$pid的目录,需要检查"

fi

done

 

例45 三行并一行

要求:想办法吧文本里面每三行内容合并到一行,例如 : 1.txt内容

1

2

3

4

5

6

7

8

处理后应该是

123

456

7

要点:while read 逐行遍历

echo -n 不换行

 

#!/bin/bash

n=1

cat $1 | while read line

do

n1=$[$n%3]

if [ $n1 -eq 0 ]

then

echo $line

else

echo -n "$line"

fi

n=$[$n+1]

done

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值