Shell脚本简单练习
2017-07-18 00:06
489 查看
一次Linux Shell脚本的简单练习
一名热心的同事提出:每天凌晨创建20个以“xyz_”开头的用户并创建密码(不允许登陆),再生成一个一键删除这些用户的脚本。
大概思路
创建用户生成脚本,crontab定时任务每天凌晨12点执行,将用户、密码以及生成时间输出到日志文件。创建用户删除脚本,取消crontab定时任务,读取日志文件,删除创建的用户,删除创建用户脚本,删除记录。
笨拙的脚本
在Centos 7下测试。#!/bin/sh #“here document”将ADD内容输出到”opt“目录下的useradd.sh cat << 'ADD' > /opt/useradd.sh #!/bin/sh #记录时间 echo "Time:`date`" >> /var/log/useradd.log for n in `seq 1 20`;do user="xyz_${RANDOM}" passwd=`date +%s | sha256sum | head -c 16` useradd -s /sbin/nologin ${user} echo "${passwd}" | passwd --stdin ${user} #将用户名和密码输出到"/var/log/useradd.log" echo -e "user:${user}\npasswd:${passwd}\n" >> /var/log/useradd.log done ADD #ADD的内容到此结束 #赋予useradd.sh执行权限 chmod +x /opt/useradd.sh #每天凌晨12点执行 echo "0 0 * * * root /opt/useradd.sh > /dev/null 2>&1" >> /etc/crontab #开始我们的删除用户脚本 cat << 'DEL' > /opt/userdel.sh #!/bin/sh #逐行读取useradd.log,给list for list in `cat /var/log/useradd.log`; do #简单判断一下,读取的这行是不是我们的用户名 if [ ${list:0:5} = user: ]; then #获得用户名并删除用户 username=`echo ${list} | sed 's/user://g'` userdel -r ${username} fi done #删除定时执行 sed -i '\/opt\/useradd.sh/d' /etc/crontab #清理 rm /opt/useradd.sh rm /var/log/useradd.log rm $0 DEL #DEL的内容到此结束 #同样,赋予执行权限 chmod +x /opt/userdel.sh rm $0
相关文章推荐
- 【shell脚本练习】网卡信息和简单日志分析
- 简单shell脚本练习
- 简单的shell脚本练习
- shell脚本的简单练习
- 初学shell,为了练习sed,写了个简单的批量修改文件名的脚本,后来执行时发现系统竟然自带有一个rename命令,顺便也记下了
- 【shell脚本练习】网卡信息和简单日志分析
- 【shell脚本练习】网卡信息和简单日志分析
- 简单的shell脚本练习(一)
- 一个简单的自动创建Shell脚本的脚本
- 简单的远程FTP定时备份Shell脚本分享
- 简单的远程FTP定时备份Shell脚本分享
- 我的一些简单的shell脚本实例
- 4000 一个简单的监控mysql服务的shell脚本
- shell简单练习
- shell简单管理iptables脚本
- 简单的Linux查找后门思路和shell脚本分享
- 一个简单的加密解密方法(java、shell脚本)
- shell脚本练习(12.9)
- 一些简单的shell脚本实例
- shell脚本练习001