shell 脚本案例
1.设计一个shell程序,添加组为class1,然后添加属于这个组的30个用户,用户名为 stuxx,其中xx从01到 30
#!/bin/bash
i=1
groupadd class1
while [ $i -le 30 ]
do
if [ $i -le 9 ];then
USERNAME=stu0${i}
else
USERNAME=stu${i}
fi
useradd $USERNAME
mkdir /home/$USERNAME
chown -R $USERNAME /home/$USERNAME
chgrp -R class1 /home/$USERNAME
i=$(($i+1))
done
2.编写一个shell程序,实现自动删除30个账号的功能,账户名为stu01至stu30
#!/bin/bash
i=1
while [ $i -le 50 ]
do
if [ $i -le 9 ];then
name=stu0$i
else
name=stu$i
fi
userdel -r $name
i=$(($i+1))
done
3.设计一个shell程序,在每月第一天 备份并压缩/etc目录的所有内容,存放在 /root/back目录里,且文件名 未如下命名格式,yy为年mm为月,dd为日。shell程序fileback存放在/usr/bin目录下。
(1)编写shellx程序fileback
#!/bin/bash
DIRNAME=`ls /root/back`
if [ $? -eq 0 ];then
sleep 3
exit 1
else
mkdir /root/back
cd /root/back
YY=`date +%y`
MM=`date +%m`
DD=`date +%d`
BACKETC=$YY$MM$DD_etc.tar.gz
tar zcvf $BACKETC /etc/
echo "fileback finished"
fi
(2)编写定时任务
echo "0 0 1 * * /bin/sh /usr/bin/fileback" > /root/etc_back
crontab /root/etc_back
或者使用crontab -e添加定时任务
0 0 1 * * /bin/sh /usr/bin/fileback
3.设计一个shell程序,在/userdate目录下创建50个目录,即user1-user20,并设置每个目录的权限,其他用户的权限为:读,文件所有者的权限为:读,写执行,文件所有者所在的组的权限为:读,执行。
#!/bin/bash
i=1
while [ $i -le 20 ]
do
if [ -d /userdate ];then
mkdir /userdate/user$i
chmod 754 /userdate/user$i
echo "$i"
i=$(($i+1))
else
mkdir /userdate
mkdir /userdate/user$i
chmod 754 /userdate/user$i
echo "$i"
i=$(($i+1))
fi
done
4.mysql备份实例,自动备份mysql,并删除30天前备份的文件。
#!/bin/bash
BACKDIR=/data/backup/mysql/`date +%Y-%m-%d`
MYSQLDB=www
MYSQLPW=backup
MYSQLUSER=backup
if [ $UID -ne 0 ];then
echo This script must use administrator or root user please exit!
sleep 2
exit 0
fi
if [ ! -d $BACKDIR ];then
mkdir -p $BACKDIR
else
echo this is $BACKDIR is exits please exit ...
sleep 2
exit
fi
/usr/bin/mysqldump -u$MYSQLUSER -p$MYSQLPW -d $MYSQLDB > $BACKDIR/www_db.sql
cd $BACKDIR;tar -zcf www_mysql_db.tar.gz *.sql
cd $BACKDIR;find . -name "*.sql"|xargs rm -rf[ $? -eq 0 ]&&echo "this `date +%Y-%m-%d`RESIN BACKUP is success"
cd /data/backup/mysql;find . -mtime +30|xargs rm -rf
6.批量解压/tmp/images目录下为后缀名为tar的文件,并解压到/usr/www/images
#!/bin/bash
PATH1=/tmp/images
PATH2=/usr/www/images
for i in `find $PATH1 -name "*.tar"`
do
tar xf $i -C $PATH2
done