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

优质内容筛选与推荐>>
1、1. let与const
2、论文阅读: Building a 3-D Line-Based Map Using Stereo SLAM
3、boost::singleton
4、java 责任链接模式
5、Database returned an invalid datetime value. Are time zone definitions for your database installed?


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号