• for 循环


    需求1:使用case实现nginx服务启停脚本。

    [root@manager case]# cat case-2.sh 
    #!/bin/bash
    #Date: 2019-10-30
    #FileName: case-2.sh
    #Description: 
    
    #定义环境变量
    . /etc/init.d/functions
    nginx_pid="/var/run/nginx.pid"
    
    case $1 in
    	start)
    	if [ -f $nginx_pid ];then
    		if [ -s $nginx_pid ];then
    			action "nginx服务已启动" /bin/false
    		else
    			rm -f $nginx_pid
    			systemctl start nginx &> /dev/null
    			if [ $? -eq 0 ];then
    				action "nginx启动成功" /bin/true
    			else
    				action "nginx启动失败" /bin/false
    			fi
    		 fi
    	else
    		systemctl start nginx &> /dev/null
    		if [ $? -eq 0 ];then
    			action "nginx启动成功" /bin/true
    		else
    			action "nginx启动失败" /bin/false
    		fi
    	fi
    	;;
    	
    
    stop)
    if [ -f $nginx_pid ];then
    	systemctl stop nginx && 
    	rm -f ${nginx_pid}
    		action "nginx服务已停止" /bin/true
    	else
    		echo "${nginx_pid} : No such file or directory"
    fi
    ;;
    
    status)
    if [ -f $nginx_pid ];then
    	echo "PID $(cat $nginx_pid) is active..."
    else
    	echo "${nginx_pid}不存在,服务未启动"
    fi
    ;;
    
      	reload)
    	if [ -f $nginx_pid ];then
    		nginx -t -c /etc/nginx/nginx.conf &> nginx.error
    		rc=$?
    		if [ $rc -eq 0 ];then
    			action "nginx is reload" /bin/true
    		else
    			nginx_conf=$(cat nginx.error |awk -F "[ :]" 'NR==1 {print $(NF-1)}')
    			nginx_line=$(cat nginx.error |awk -F "[ :]" 'NR==1 {print $NF}')
    			read -p "是否进入${nginx_conf} 配置文件中的 ${nginx_line} 行修改: [ yes | no ]" select
    				case $select in
    					yes)
    						vim ${nginx_conf} +${nginx_line}
    						;;
    					no)
    						exit 2
    				esac
    		fi
    	else
    		action "nginx 没有启动" /bin/false
    
    ​	fi
    ​	;;
    
    *)
    	echo "USAGE:  $0 {start | stop | status | reload }"
    		exit 3
    
    esac
    

    需求2:使用case实现nginx状态监控脚本。 stub_status

    #!/bin/bash
    #Date: 2019-10-30
    #FileName: case-3.sh
    #Description: 
    Nginx_status_file=nginx.status
    Nginx_status_Path=nginx_status
    
    curl -sH Host:${HostName} http://127.0.0.1/${Nginx_status_Path} > ${Nginx_status_file}
    case $1 in
    	active)
    		echo $(( $(awk '/Active/ {print $NF}' ${Nginx_status_file}) -1 ))
    		;;
    	accepts)
    		echo $(( $(awk 'NR==3 {print $1}' ${Nginx_status_file}) -1 ))
    		;;
    	handled)
    		echo $(( $(awk 'NR==3 {print $2}' ${Nginx_status_file}) -1 ))
    		;;
    	requests)
    		echo $(( $(awk 'NR==3 {print $3}' ${Nginx_status_file}) -1 ))
    		;;
    	reading)
    		echo $(( $(awk 'NR==4 {print $2}' ${Nginx_status_file}) -1 ))
    		;;
    	writing)
    		echo $(( $(awk 'NR==4 {print $4}' ${Nginx_status_file}) -1 ))
    		;;
    	waiting)
    		echo $(( $(awk 'NR==4 {print $NF}' ${Nginx_status_file}) -1 ))
    		;;
    	*)
    		echo "USAGE: $0 { active | accepts | handled | requests | reading | writing | waiting }"
    		exit 1
    
    esac
    

    需求3:使用case实现php-fpm状态监控脚本。

    [root@web01 conf.d]# cat test.bao.com.conf 
    server {
    	listen 80;
    	server_name test.bao.com;
    	
    
    location ~ ^/(phpfpm_status)$ {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }	
    
    }
    
    [root@manager case]# cat case-4.sh 
    #!/bin/bash
    #Date: 2019-10-30
    #FileName: case-4.sh
    #Description: 
    
    HostName=test.cheng.bao.com
    php_status_file=phpfpm.status
    php_status_path=phpfpm_status
    
    curl -sH Host:${HostName} http://10.0.0.7/${php_status_path} > ${php_status_file}
    
    case $1 in
    	pool)
    		echo "$(awk '/pool/ {print $NF}' ${php_status_file})"
    		;;
    	process_manager)
    		echo "$(awk '/process manager/ {print $NF}' ${php_status_file})"
    		;;
    	start_time)
    		echo "$(awk  '/start time/{print $3,$4}' ${php_status_file})"
    		;;
    	start_since)
    		echo "$(awk  '/start since/ {print $NF}' ${php_status_file})"
    		;;
    	accepted_conn)
    		echo "$(awk  '/accepted conn/ {print $NF}' ${php_status_file})"
    		;;
    	listen_queue)
    		echo "$(sed -n '6p' ${php_status_file} |awk '{print $NF}')"
    		;;
    	max_listen_queue)
    		echo "$(awk '/max listen/ {print $NF}' ${php_status_file})"
    		;;
    	listen_queue_len)
    		echo "$(awk '/queue len/ {print $NF}' ${php_status_file})"
    		;;
    	idle_processes)
    		echo "$(awk '/idle processes/ {print $NF}' ${php_status_file})"
    		;;
    	active_processes)
    		echo "$(sed -n '10p' ${php_status_file} |awk '{print $NF}')"
    		;;
    	total_processes)
    		echo "$(awk '/total processes/ {print $NF}' ${php_status_file})"
    		;;
    	max_active_processes)
    		echo "$(awk '/max active processes/ {print $NF}' ${php_status_file})"
    		;;
    	max_children_reached)
    		echo "$(awk '/max children reached/ {print $NF}' ${php_status_file})"
    		;;
    	slow_requests)
    		echo "$(awk '/slow requests/ {print $NF}' ${php_status_file})"
    		;;
    	*)
    		echo "USAGE: $0 { pool | process_manager | start_time | start_since }"
    		exit 1
    
    esac
    

    1:编写脚本,根据用户输入的服务名称查询该服务的状态,并让用户选择启动、关闭、重启、保持不变并输出该服务器以启动、关闭、重启、保持不变

    [root@manager case]# cat case-6.sh 
    #!/bin/bash
    
    #判断当前执行脚本的是否为超级管理员
    if [ $UID -ne 0 ];then
    	echo ""$USER" $0 Permission denied"
    	exit 
    fi
    
    
    #判断用户传入的参数
    if [ $# -ne 1 ];then
    	echo "USAGE: $0 Service Name [ nginx | httpd | vsftpd | rsyncd ]"
    	exit
    fi
    
    systemctl status $1 &>/dev/null
    if [ $? -eq 4 ];then
     	echo "Unit $1 could not be found."
    else
    	#字符串比对
    	system_status=$(systemctl status $1|grep Active|awk '{print $2}')
    	if [ $system_status == "active" ];then
    		read -p "$1 已启动,你可以选择 [ restart | stop ] " Action
    		case $Action in
    			restart)
    				systemctl restart $1
    				echo "$1 重启成功......"
    				;;
    			stop)
    				systemctl stop $1
    				echo "$1 停止成功......"
    				;;
    			*)
    				exit 1
    		esac
    
    #针对没有启动的服务,提示是否启动
    elif [ $system_status == "inactive" ];then
    	read -p "$1 未启动,可以选择 [ start | quit ] " Action2
    	case $Action2 in
    		start)
    			systemctl start $1
    			echo "$1 启动成功"
    			;;
    		quit)
    			echo "Bye"
    			exit
    			;;
    		*)
    			exit
    	esac
    fi
    
     fi
    
    
    方式二:
    [root@manager case]# cat case-5.sh 
    #!/bin/bash
    #Date: 2019-10-30
    #FileName: case-5.sh
    #Description: 
    
    
    read -p "请输入你要查询服务的名称:" Action
    systemctl status ${Action} &> /dev/null
    if [ $? -eq 0 ];then
    	echo "Active: active (running)"
    else
    	echo "Active: failed"
    fi
    
    cat <<EOF
    1)启动
    2)停止
    3)重启
    4)退出
    EOF
    
    read -p "请输入你需要执行的操作:[ 1 | 2 | 3 | 4 ] " Nu
    case ${Nu} in
    	1)
    		systemctl start ${Action}
    		if [ $? -eq 0 ];then
    			echo "$Action服务已启动"
    		else
    			echo "$Action服务未启动"
    		fi
    		;;
    	2)
    		systemctl stop ${Action}
    		if [ $? -eq 0 ];then
    			echo "$Action服务已停止"
    			exit 1
    		fi
    		;;
    	3)
    		systemctl restart ${Action}
    		if [ $? -eq 0 ];then
    			echo "$Action服务已重启"
    			exit 1
    
    ​	fi
    ​	;;
    4)
    ​	echo "抱歉,没有这个服务,你可以去其他地方找找"
    
    esac
    

    2:输入两个数字,输出的两个数字加减乘除得四个的数(判断输入的是否为两个数字,输入的是否为数字)

    [root@manager case]# cat case-6.sh 
    #!/bin/bash
    #Date: 2019-10-30
    #FileName: case-6.sh
    #Description: 
    
    if [[ ! $1$2 =~ ^[0-9]+$ ]];then
    	echo "你输入的不是数字"
    	exit 1
    fi
    	if [ $# -ne 2 ];then
    		echo "请输入两个数字:[ 1 | 2 ]"
    		exit 1
    		fi
    echo "$1 + $2 = $[ $1 + $2 ]"
    echo "$1 - $2 = $[ $1 - $2 ]"
    echo "$1 * $2 = $[ $1 * $2 ]"
    echo "$1 / $2 = $[ $1 / $2 ]"
    echo "$1 % $2 = $[ $1 % $2 ]"
    
    

    4:取出当前系统日期、时间、当前有几个登陆用户、过去15分钟的平均负载、当前可用内存大小、当前系统空闲时间,输入到/tmp/txt.csv

    [root@manager 作业题]# cat if2.sh 
    #!/bin/bash
    #Date: 2019-10-30
    #FileName: if2.sh
    #Description: 
    
    
    Date=$(date +%F_%T)
    User=$(w |awk '/up/ {print $6}')
    Load=$(w |awk '/up/ {print $NF}')
    Free=$(free -h |awk '/Mem/ {print $NF}')
    Time=$(cat /proc/uptime |awk '{print $2}')
    
    echo "当前系统时间:${Date}" > /tmp/txt.csv
    echo "当前登录用户:${User}" >> /tmp/txt.csv
    echo "当前系统过去15分钟的平均负载:${Load}" >> /tmp/txt.csv
    echo "当前系统可用内存大小:${Free}" >> /tmp/txt.csv
    echo "当前系统空闲时间:${Time}" >> /tmp/txt.csv
    
    5:检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员
    [root@manager 作业题]# cat if1.sh 
    #!/bin/bash
    #Date: 2019-10-30
    #FileName: if1.sh
    #Description: 
    
    if [ $UID -eq 0 ];then
    	echo "用户为超级管理员"
    	yum install vsftpd -y &> /dev/null
    else
    	echo "抱歉,您不是管理员"
    
    fi
    

    for

    需求1:批量探测某个网段的主机存活状态,将存活的主机存入ok.txt文件中。

    方式一:
    [root@web01 for]# cat for3.sh
    #!/usr/bin/bash
    
    for i in {1..254}
    do
    	{
    	ip=10.0.0.$i
    	ping -W1 -c1 $ip &> /dev/null
    	if [ $? -eq 0 ];then
    		echo "$ip 存活" >>ok.txt
    	fi
    	}&
    done
    	wait
    
    方式二:
    [root@manager for]# cat for-07.sh 
    #!/bin/bash
    #Date: 2019-10-31
    #FileName: for-07.sh
    #Description: 
    
    ip=10.0.0.
    for n in `seq 1 254`
    do	{
    	ping -W1 -c1 $ip$n &>/dev/null
    	rc=0
    	if [ $rc -eq 0 ];then
    	echo "$ip$n 存活"
    
    fi
    	}&
    done
    	wait
    

    需求2:判断主机存活状态,要求判断三次,如果三次失败则失败。

    方式一:
    [root@web01 for]# cat for4.sh 
    #!/usr/bin/bash
    
    ip=10.0.0.
    for i in `seq 1 254`
    do {
    	ping -W1 -c1 $ip$i &> /dev/null
    	if [ $? -eq 0 ];then
    		echo "$ip$i 存活" >>yes.txt
    	else
    	for j in {1..3}
    	do
    	ping -W1 -c1 $ip$i &> /dev/null
    	if [ $? -eq 0 ];then
    		echo "$ip$j 存活" >>yes.txt
    	else
    		echo "$ip$j 不存活" >>err.txt
    	fi
    	done
    
    fi
    }&
    
    done
    	wait
    
    方式二:	
    [root@manager for]# cat for-12.sh 
    #!/bin/bash 
    
    for i in {1..254}
    do
        {
    			ip=10.0.0.$i
    			ping -W1 -c1 $ip &>/dev/null
    			if [ $? -eq 0 ];then
    				echo "$ip 存活" >> ok.txt
    
    else
    		#如果判断第一次不存活,则在进行一次for循环,循环3次
    		for j in {1..3}
    		do
    			ping -W1 -c1 $ip &>/dev/null
    			if [ $? -eq 0 ];then
    				echo "$ip 存活" >> ok.txt
    			else
    				echo "$ip 不存活" >> err.txt
    			fi
    		done
    fi
    
     }&
    done
    	wait
    

    二、使用nmap

    nmap localhost #查看主机当前开放的端口
    nmap -p 1024-65535 localhost #查看主机端口(1024-65535)中开放的端口
    nmap -PS 192.168.21.163 #探测目标主机开放的端口
    nmap -PS22,80,3306 192.168.21.163 #探测所列出的目标主机端口
    nmap -O 192.168.21.163 #探测目标主机操作系统类型
    nmap -A 192.168.21.163 #探测目标主机操作系统类型
    nmap --help #更多nmap参数请查询帮助信息
    

    需求3:现在有一个ip.txt的文件,里面有很多IP地址。还有一个port.txt的文件,里面有很多端口号。现在希望对ip.txt的每个IP地址进行端口的探测,探测的端口号来源于port.txt文件中 最后将开放的端口和IP保存到一个ok.txt文件。

    ip.txt							port.txt
    10.0.0.1						80
    10.0.0.2						22
    10.0.0.3						3306
    10.0.0.4						23
    10.0.0.5						443
    10.0.0.6						9000
    10.0.0.7						123
    10.0.0.8						6379
    10.0.0.9						10050
    172.16.1.5						10051
    192.168.10.1
    172.16.1.6
    
    [root@web01 for]# cat for6.sh 
    #!/usr/bin/bash
    
    #遍历文件中的ip地址
    
    for ip in $(cat ip.txt)
    do {
    	#第二次循环,遍历文件中的端口号
    	for port in $(cat port.txt)
    	do
    		#探测ip与端口的存活状态
    		nc -vz -w 1 $ip $port &> /dev/null
    		if [ $? -eq 0 ];then
    		echo "$ip $port 端口已开放"
    	else
    		echo "$ip $port 端口未开放" >>er.txt
    		fi
    	done
    	}&
    done
    	wait
    

    需求4:获取系统的所有用户并输出。效果如下:

    This is 1 user: root
    This is 2 user: bin
    This is 3 user: daemon
    This is 4 user: adm
    ...............
        1.怎么获取所有的用户
    	2.遍历/etc/passwd这个文件
    	3.如何让数字的编号进行
    [root@manager for]# cat for-12.sh 
    #!/bin/bash
    #Date: 2019-10-31
    #FileName: for-12.sh
    #Description: 
    
    i=1
    user=$(cat /etc/passwd |awk -F ":" '{print $1}')
    for ur in $user
    do
    	echo "This is  ${i} $ur"
    	i=$[ $i +1 ]
    	sleep 1
    done
    

    需求5:批量创建100个用户,比如输入oldxu则会创建oldxu01-100。

    [root@manager for]# cat for-10.sh 
    #!/bin/bash
    #Date: 2019-10-31
    #FileName: for-10.sh
    #Description: 
    
    read -p "请输入创建用户的前缀:" qian
    #for user in {1..100}
    for user in $(seq -w 1 100)
    do
    	if [ -z $qian ];then
    		echo "请输入前缀"
    	fi
    	
    
    id $qian$user &> /dev/null
    if [ $? -ne 0 ];then
    useradd $qian$user
    if [ $? -eq 0 ];then
    	echo "$qian$user is OK"
    fi
    
    else
    	echo "$qian$user用户已存在"
    fi
    
    done
    

    需求6:批量创建用户脚本,需要用户输入创建的用户数量,以及需要用户输入创建的前缀。例如:前缀oldxu,个数10,代表创建oldxu1~oldxu10,总共10个用户。

    [root@manager for]# cat for-11.sh 
    #!/bin/bash
    #Date: 2019-10-31
    #FileName: for-11.sh
    #Description:
    . /etc/init.d/functions
    
    read -p "请输入创建用户的前缀:" qian
    if [ -z $qian ];then
    	echo "请输入前缀,谢谢!"
    	exit 1
    fi
    read -p "请输入要创建几个用户:" num
    if [[ ! $num =~ ^[0-9]+$ ]];then
    	echo "请输入整数"
    fi
    
    for i in $(seq "$num")
    do
    	user=${qian}$i
    	useradd $user &> /dev/null
    	if [ $? -eq 0 ];then
    	action "用户创建成功" /bin/true
    else
    	action "用户创建失败" /bin/false
    	fi
    done
    

    需求7:批量创建用户脚本,需要用户输入创建的用户数量(必须是整数),同时还需要用户输入前缀(前缀不能为空)。

    例如:前缀oldxu,个数10,代表创建oldxu1~oldxu10,总共10个用户。
    [root@manager for]# cat for-11.sh 
    #!/bin/bash
    #Date: 2019-10-31
    #FileName: for-11.sh
    #Description:
    . /etc/init.d/functions
    
    read -p "请输入创建用户的前缀:" qian
    if [ -z $qian ];then
    	echo "请输入前缀,谢谢!"
    	exit 1
    fi
    read -p "请输入要创建几个用户:" num
    if [[ ! $num =~ ^[0-9]+$ ]];then
    	echo "请输入整数"
    fi
    
    for i in $(seq "$num")
    do
    	user=${qian}$i
    	useradd $user &> /dev/null
    	if [ $? -eq 0 ];then
    	action "用户创建成功" /bin/true
    else
    	action "用户创建失败" /bin/false
    	fi
    done
    

    需求8:循环批量创建用户,需要填入用户的数量、用户的前缀、用户的统一密码(使用read、case、for语句)

    [root@manager for]# cat for-13.sh 
    #!/bin/bash
    #Date: 2019-10-31
    #FileName: for-11.sh
    #Description:
    . /etc/init.d/functions
    
    read -p "请输入创建用户的前缀:" qian
    if [ -z $qian ];then
    	echo "请输入前缀,谢谢!"
    	exit 1
    fi
    read -p "请输入要创建几个用户:" num
    if [[ ! $num =~ ^[0-9]+$ ]];then
    	echo "请输入整数"
    fi
    
    for i in $(seq "$num")
    do
    	user=${qian}$i
    	useradd $user &> /dev/null
    	if [ $? -eq 0 ];then
    	action "用户创建成功" /bin/true
    else
    	action "用户创建失败" /bin/false
    	fi
    	echo "123" |passwd --stdin $user &> /dev/null
    	if [ $? -eq 0 ];then
    		action "增加密码成功" /bin/true
    	else
    		action "设置密码失败" /bin/false
    	fi
    done
    

    需求9:通过读入文件中的用户,进行批量添加用户。

    [root@manager for]# cat for-15.sh 
    #!/bin/bash
    #Date: 2019-10-31
    #FileName: for-15.sh
    #Description: 
    
    for user in $(cat user.txt)
    do
    	useradd $user
    done
    

    需求10:通过读入文件中的用户与密码文件,进行批量添加用户。文件中的格式: user:passwd

    [root@manager for]# cat for-16.sh 
    #!/bin/bash
    #Date: 2019-10-31
    #FileName: for-16.sh
    #Description: 
    
    for user in $(cat user.txt)
    do
    	us=$(echo $user |awk -F ":" '{print $1}')
    	pw=$(echo $user |awk -F ":" '{print $2}')
    
    id $us &> /dev/null
    if [ $? -eq 0 ];then
    	continue
    else
    	useradd $us
    	echo "$pw" | passwd --stdin $us &> /dev/null
    	echo "$us is create ok......" 
    
    fi
    
    done
    

    需求11: 批量创建用户,用户名oldxu01-100 密码随机(8~12), 然后将创建成功的用户名及密码写入到一个文件中.

    mkpasswd -l
    oldxu01:dasd1#!@#!@dsa
    oldxu02:dascxasdas1!@#
    
    [root@manager for]# cat for-17.sh 
    #!/bin/bash
    #Date: 2019-10-31
    #FileName: for-17.sh
    #Description: 
    
    . /etc/init.d/functions
    
    i=8
    read -p "请输入你需要创建用户的前缀:" qian
    if [ -z $qian ];then
    	echo "不能输入回车"
    	exit
    fi
    
    for user in {1..10}
    do
    	id $qian$user &> /dev/null
    	if [ $? -ne 0 ];then
    		useradd $qian$user
    		mkpasswd -l $i 
    		i=$[ $i +1 ]
    		echo "$qian$user:$(mkpasswd -l $i)" >> pass.txt
    		echo "$qian$user 创建成功"
    
    fi
    
    done
    

    需求12:使用case实现批量删除用户。

    1.提示用户输入需要删除的用户以及删除的个数。
    2.如果用户存在则删除,如果不存在则提示no such user。
    [root@manager for]# cat userdel.sh 
    #!/bin/bash
    #Date: 2019-10-31
    #FileName: userdel.sh
    #Description: 
    
    read -p "请输入删除用户的前缀:" qian
    if [ -z $qian ];then
    	echo "请输入用户前缀"
    fi
    read -p "请输入你要删除几个:" num
    if [[ ! $num =~ ^[0-9]+$ ]];then
    	echo "请输入数字"
    	exit
    
    fi
    for user in {1..100}
    do 
    	id $qian$num &> /dev/null
    	if [ $? -eq 0 ];then
    	userdel $qian$user
    	echo "$qian$user 删除成功"
    	
    else
    	echo "$qian$user no such user"
    	fi
    	
    done
    

    需求13:查看当前系统已使用内存的百分比,如果以使用的内存占比超过50%则将后台运行的服务列出来,并让用户选择保持不变或者关掉某个服务,后再次显示使用内存的百分比,若还超过50%,则重复上述操作

    需求14:使用for循环备份mysql库,每个库对应一个sql文件,需要排除没用的。

    	1.如何拿到所有的库名称  wordpress jpress zabbix zrlog 
    	2.循环拼接备份命令   mysqldump -uroot -poldxu.com  -B zabbix >/mysql/data/zabbix.sql
    
    [root@db01 ~]# cat mysql-db.sh 
    #!/usr/bin/bash
    
    db_path=/backup/mysql
    date_time=$(date +%F)
    db_name=$(mysql -uroot -e "show databases" |sed 1d |egrep -v "*_schema|test|mysql")
    
    [ -d $db_path ] || mkdir -p $db_path
    
    for i in $db_name
    do
    	mysqldump -uroot -B ${i} > $db_path/${i}_${date_time}.sql
    	if [ -f $db_path/${i}_${date_time}.sql ];then
    		echo "$i backup is OK....."
    	else
    		echo "$i backup is error...."
    	fi
    
    done
    	#保留最近180天的数据
    	if [ -f $db_path/$date_time/day.txt ];then
    		touch $db_path/$date_time/day.txt
    
    find $db_path -type f -mtime +180 -delete > $db_path/$date_time/day.txt
    fi需求15:使用for嵌套循环实现分库分表备份。
    [root@db01 ~]# cat mysql-backup.sh 
    #!/usr/bin/bash
    
    db_path=/backup/mysql
    date_time=$(date +%F)
    db_name=$(mysql -uroot -e "show databases;" |sed 1d |egrep -v "*_schema|mysql|test")
    
    #1.准备备份的目录
    
    [ -d $db_path ] || mkdir -p $db_path
    
    #2.获取所有的库名称
    for i in $db_name
    do
    	#3.获取对于库的所有表
    	db_table=$(mysql -uroot -e "use $i; show tables" |sed 1d)
    	for j in $db_table
    	do
    		[ -d $db_path/$i/$date_time ] || mkdir -p $db_path/$i/$date_time
    			mysqldump -uroot $i $j >$db_path/$i/$date_time/${j}.sql
    		done	
    
    done
    

    需求16:编写一个上课随机点名脚本。

    [root@manager for]# cat for-20.sh 
    #!/bin/bash
    if [ -s name.txt ];then
    	 User=$(sort --random-sort name.txt |awk 'NR==1')
    	 echo "$User" 
    	 
    
     grep $User name.txt >> name1.txt
     sed -i '/'$User'/d' name.txt
    
     else
     	cat name1.txt>name.txt
    	rm -rf name1.txt
    fi
    
    
    [root@manager for]# cat for-20.sh 
    #!/bin/bash
    #1.只循环20次
    for i in {1..20}
    do
    	#统计一下名单中的行号
    	line=$(cat name.txt|wc -l)
    
    #设定一个随机的变量值,但这个值不能超过文件名单的行号
    sj=$(( ${RANDOM}%$line+1 ))
    
    循环20次,打印20次名单
    
    echo  -e "  $(sed -n "${sj}p" name.txt) "
    sleep 0.1
    
    done
    	sj=$(( $sj + 1 ))
        username=$(sed -n "${sj}p"  name.txt)
        echo -e 这次回答问题的是: "33[32m $username 33[0m" 同学。
    

    需求17: 写一个倒计时脚本.

    [root@manager for]# cat for-19.sh 
    #!/bin/bash
    #Date: 2019-10-31
    #FileName: for-19.sh
    #Description: 
    
    for i in {9..1}
    do
    	echo -ne "$i"
    	sleep 1
    done
    echo -e " hello world"
    
    [root@manager for]# cat for-19.sh 
    #!/bin/bash
    #Date: 2019-10-31
    #FileName: for-19.sh
    #Description: 
    for i in {10..1}
    do
    	echo -n -e "最后倒计时:   $i 
    "
    	sleep 1
    done
    

    需求18:抓取https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/页面中的所有rpm包 wget

    [root@manager for]# cat for-24.sh 
    #!/bin/bash
    #1.获取网页的源代码
    #2.对网页源代码进行过滤筛选,提取文件名称
    #3.将下载的url和文件名称拼接,通过wget下载
    
    Url_File=url.txt
    Pkg_Name=$(grep "<a href=" $Url_File | awk -F '"' '{print $2}' | egrep -v "debuginfo|repodata|../")
    Get_Url=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/
    
    for package in $Pkg_Name
    do
    	#完整的下载url地址
    	url_package=$Get_Url$package
    
    #指定下载至某个目录
    wget -O /mnt/$package    $url_package &>/dev/null
    
    #判断下载是否正常
    if [ $? -eq 0 ];then
    	echo "软件包: $pkg is ok..."
    fi
    
    done
    
  • 相关阅读:
    【发现】visualvm是jdk自带的一款监控工具
    【java】使用jsp命令查看系统中java运行的程序及进程号
    使用软件FileZilla, 通过sftp协议实现windows与linux系统传输文件
    学习spring源码-可参考的资料
    [JS]截取字符,中英文都可以
    ubuntu中在线升级python
    Python中NumPy基础使用
    Web Deploy发布网站一条龙解决方案
    C# lazy<T>的用法
    asp.net 验证正则表达式
  • 原文地址:https://www.cnblogs.com/baozexu/p/11787842.html
Copyright © 2020-2023  润新知