设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。

i=1
groupadd class1
while [ $i -le 30 ]
do
if [ $i -le 9 ] ;then
USERNAME=stu0${i}
else
USERNAME=stu${i}
fi
useradd $USERNAME
chgrp -R class1 /home/$USERNAME
i=$(($i+1))
done

编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50。

#!/bin/sh
i=1
while [ $i -le 50 ]
do
userdel -r stud${i}
i=$(($i+1 ))
done

mysql备份实例,自动备份mysql,并删除30天前的备份文件

#!/bin/sh

#auto backup mysql
#wugk 2012-07-14
#PATH DEFINE BAKDIR=/data/backup/mysql/`date +%Y-%m-%d`
MYSQLDB=www
MYSQLPW=backup
MYSQLUSR=backup if[ $UID -ne 0 ];then
echo This script must use administrator or root user ,please exit!
sleep 2
exit 0
fi if[ ! -d $BAKDIR ];then
mkdir -p $BAKDIR
else
echo This is $BAKDIR exists ,please exit ….
sleep 2
exit
fi ###mysqldump backup mysql /usr/bin/mysqldump -u$MYSQLUSR -p$MYSQLPW -d $MYSQLDB >/data/backup/mysql/`date +%Y-%m-%d`/www_db.sql cd $BAKDIR ; tar -czf www_mysql_db.tar.gz *.sql cd $BAKDIR ;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

自动安装Nginx脚本,采用case方式,选择方式,也可以根据实际需求改成自己想要的脚本

#!/bin/sh

###nginx install shell
###wugk 2012-07-14
###PATH DEFINE SOFT_PATH=/data/soft/
NGINX_FILE=nginx-1.2.0.tar.gz
DOWN_PATH=http://nginx.org/download/ if[ $UID -ne 0 ];then
echo This script must use administrator or root user ,please exit!
sleep 2
exit 0
fi if[ ! -d $SOFT_PATH ];then
mkdir -p $SOFT_PATH
fi download ()
{
cd $SOFT_PATH ;wget $DOWN_PATH/$NGINX_FILE
} install ()
{
yum install pcre-devel -y
cd $SOFT_PATH ;tar xzf $NGINX_FILE ;cd nginx-1.2.0/ &&./configure –prefix=/usr/local/nginx/ –with-http_stub_status_module –with-http_ssl_module
[ $? -eq 0 ]&&make &&make install
} start ()
{
lsof -i :80[ $? -ne 0 ]&&/usr/local/nginx/sbin/nginx
} stop ()
{
ps -ef |grep nginx |grep -v grep |awk ‘{print $2}’|xargs kill -9
} exit ()
{
echo $? ;exit
} ###case menu ##### case $1 in
download )
download
;; install )
install
;; start )
start
;;
stop )
stop
;; * ) echo “USAGE:$0 {download or install or start or stop}”
exit
esac

文件上传,列出部分代码

#!/bin/sh

DATE=`date +%Y_%m_%d_%H`

if [ $1 ]
then
for file in $(sed '/^$/d' $1) //去掉空行
do
if [ -f $file ] //普通文件
then
res=`scp $file $2:$file` //上传文件
if [ -z $res ] //上传成功
then
echo $file >> ${DATE}_upload.log //上传成功的日志
fi
elif [ -d $file ] //目录
then
res=`scp -r $file $2:$file`
if [ -z $res ]
then
echo $file >> ${DATE}_upload.log
fi
fi
done
else
echo "no file" >> ${DATE}_error.log
fi

shell脚本之练习题的更多相关文章

  1. linux 的基本操作(编写shell 脚本)

    终于到shell 脚本这章了,在以前笔者卖了好多关子说shell脚本怎么怎么重要,确实shell脚本在linux系统管理员的运维工作中非常非常重要.下面笔者就带你正式进入shell脚本的世界吧. 到现 ...

  2. shell脚本练习题(更新中...)

    练习题(这里贴的是自己写的代码, 网上给的题目代码我会附加在最下面) 1. 编写shell脚本,计算1-100的和: #!/bin/bash #caculate the to `; do sum=$[ ...

  3. shell 脚本之 shell 练习题汇总

    整理了一些 shell 相关的练习题,记录到这里. 1. 请按照这样的日期格式 xxxx-xx-xx 每日生成一个文件,例如:今天生成的文件为 2013-09-23.log, 并且把磁盘的使用情况写到 ...

  4. shell脚本练习题

    下面列出了几个linux学习中的shell脚本题目 1.九九乘法表 #!/bin/bash echo "九九乘法表" # 注意((之间不能有空格.加减乘除的格式.还有转义字符\*. ...

  5. shell脚本结构

    echo $? 代表上一次命令的状态返回值,‘0’则代表为真<执行成功>,‘非零’则代表为假<执行失败>. shell脚本: <判断老男孩的年纪> [root@bo ...

  6. centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课

    centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   ...

  7. 第三部分shell编程3(shell脚本2)

    7. if 判断一些特殊用法 if [ -z $a ] 这个表示当变量a的值为空时会怎么样if grep -q '123' 1.txt; then 表示如果1.txt中含有'123'的行时会怎么样if ...

  8. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  9. 使用C#给Linux写Shell脚本

    在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...

随机推荐

  1. 洛谷 P3041 [USACO12JAN] Video Game Combos

    题目描述 Bessie is playing a video game! In the game, the three letters 'A', 'B', and 'C' are the only v ...

  2. 【LCA倍增】POJ1330-Nearest Common Ancestors

    [知识点:离线算法&在线算法] 一个离线算法,在开始时就需要知道问题的所有输入数据,而且在解决一个问题后就要立即输出结果. 一个在线算法是指它可以以序列化的方式一个个的处理输入,也就是说在开始 ...

  3. [Eclipse]--Error:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path.

    一段时间没用eclipse后,再去打开以前的项目,发现一打开前线标红.查看错误的时候,如下图所示: Error:The superclass "javax.servlet.http.Http ...

  4. 【摘】请问make -j8 和make -j4 是什么意思?什么作用?

    看到别人写的Shell脚本中有 make -j8 等字眼,Google了一下,网友说是: make linux kernel/rootfs时候多线程执行.

  5. 【java】子类可以通过调用父类的public方法调用父类的private方法,为什么?

    代码1: 打印结果: 代码2: 运行结果: 问题: 代码1中super是父类自己调用自己的add()方法,并在add()方法中调用了私有的del()方法,那为什么打印出来的this是子类? 代码2中t ...

  6. 针对WebLogic Server 12.1.3版本打补丁

    先去下载补丁文件,在链接 https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=179118524484876&id= ...

  7. YUV12(420) (from)to RGB24

    直接上代码 #include <opencv2/opencv.hpp> #include <stdio.h> #define min(a,b) ((a<b)?a:b) # ...

  8. solr6.6 导入 pdf/doc/txt/json/csv/xml文件

    文本主要介绍通过solr界面dataimport工具导入文件,包括pdf.doc.txt .json.csv.xml等文件,看索引结果有什么不同.其实关键是managed-schema.solrcon ...

  9. Yii2系列教程三:Database And Gii

    上一篇文章我们理了一下Yii2的MVC,Forms和Layouts,这篇文章就直接按照约定来说说Yii2与数据库相关的一些事情,如果你觉得不够的话,不急,更具体的用法我会在后续的教程给出,并且这里也会 ...

  10. Linux文件夹、分区

    必须明确,硬盘分区的存在,是由硬盘的物理特性决定的,不会因为操作系统的不同而有所改变 所以不用对为根目录/挂载分区的同时还为/usr挂载分区感到惊讶   ====分区的概念==== 可以把一个硬盘比成 ...