Shell编程
51DevOps-刺天冬
当你发现自己的才华撑不起野心时,就请安静下来学习吧!
展开
-
如何实现对MySQL数据库进行分库加分表备份,请用脚本实现?
[root@qls /service/scripts]# cat for-6.sh#!/bin/bash#引用函数[ -f /etc/init.d/functions ] && source /etc/init.d/functions#定义变量Date=$(date +%F)Db_User=rootDb_Pass=qls.123#编写循环for Db_Name in $(mysql -u$Db_User -p$Db_Pass -e "show databases;" |.原创 2020-05-12 17:55:23 · 535 阅读 · 0 评论 -
for循环打印下面这句话中字母数不大于6的单词。
I am qiuzengjiateacher welcome to Linux training class[root@qls /service/scripts]# cat for-1.sh#!/bin/bashfor i in I am qiuzengjiateacher welcome to Linux training classdo if [ ${#i} -le 6 ];then echo $i fidone[root@qls /service/sc.原创 2020-05-12 17:54:52 · 662 阅读 · 0 评论 -
开发shell脚本分别实现以脚本传参以及read读入的方式比较2个整数大小。以屏幕输出的方式提醒用户比较结果
注意:一共是开发2个脚本。当用脚本传参以及read读入的方式需要对变量是否为数字、并且传参个数做判断。[root@qls /service/scripts]# cat read-1.sh#!/bin/bash#提示用户输入第一个数字read -p "请输入第一个数字:" Num1if [[ ! $Num1 =~ ^[0-9]+$ ]];then echo "你输入的不是一个正整数!请重新输入!"fi#提示用户输入第二个数字read -p "请输入第二个数字:" Num2if [原创 2020-05-12 17:54:13 · 1581 阅读 · 1 评论 -
打印选择菜单,一键安装Web服务
[root@qls scripts]# sh menu.sh1.[install lamp]2.[install lnmp]3.[exit]please input the num you want: 2要求:1、当用户输入1时,输出“start installing lamp.”然后执行/server/scripts/lamp.sh,输出"lamp is installed" 后退出脚本;2、当用户输入2时,输出“start installing lnmp.”然后执行/server..原创 2020-05-12 17:53:33 · 448 阅读 · 1 评论 -
分别监控web服务和db服务是否正常,不低于3种监控策略。要求间隔1分钟,持续监控
[root@qls /service/scripts]# cat web-1.sh#!/bin/bashIp=10.0.0.7Ping() { ping -c1 -W1 $Ip &>/dev/null if [ $? -ne 0 ];then echo "IP地址${Ip}是不通的!" fi}Curl() { Http_State=$(curl -s -I $Ip | awk '/HTTP/{print $2}') i.原创 2020-05-12 17:53:00 · 379 阅读 · 0 评论 -
监控web站点目录(/var/html/www)下所有文件是否被恶意篡改。
监控web站点目录(/var/html/www)下所有文件是否被恶意篡改(文件内容被改了),如果有就打印改动的文件名(发邮件),定时任务每3分钟执行一次。[root@db01 ~]# mkdir -p /var/www/html[root@db01 ~]# find /etc -type f -name "*.conf" -exec cp {} /var/www/html/ \;[root@qls /service/scripts]# cat file_md5.sh#!/bin/bash原创 2020-05-12 17:52:28 · 788 阅读 · 0 评论 -
使用函数编写rsync的系统启动脚本
[root@qls /service/scripts]# cat case-1.sh#!/bin/bash#引用函数库[ -f /etc/init.d/functions ] && source /etc/init.d/functions#判断执行脚本是否存在位置变量if [ $# -ne 1 ];then echo "Usage: $0 {start|stop|status|restart}" exitfi#根据位置变量的结果进行执行相对应的命令Pid_F.原创 2020-05-12 17:51:05 · 159 阅读 · 0 评论 -
请破解这些字符串对应的md5sum前的RANDOM对应数字
已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果:2102929900205d1ca3da16771f6d12dd31d30eea[root@qls /service/scripts]# cat random.sh#!/bin/bashfor ((i=0;i<=32767;i++))do for j in $(cat /service/scripts/random.txt) do Ran=$(echo $i|m原创 2020-05-12 17:50:26 · 272 阅读 · 0 评论 -
使用数组统计tcp的11中状态的数量
[root@qls /service/scripts/day13]# cat g_array-3.sh#!/bin/bash#声明关联数组declare -A Array_StateState=$(netstat -ant | awk 'NR>2{print $NF}')#循环赋值for a in $Statedo let Array_State[$a]++done#遍历与循环for i in ${!Array_State[@]}do echo -e "状态为:原创 2020-05-10 22:44:36 · 107 阅读 · 0 评论 -
使用数组统计出访问日志中每个URL访问次数
[root@qls /service/scripts/day13]# cat g_array-2.sh#!/bin/bash#声明关联数组declare -A Array_Stateawk '{print $11}' access.log >access_state.log#循环赋值while read linedo let Array_State[${line}]++done < access_state.log#遍历与循环for i in ${!Array_Sta原创 2020-05-10 22:43:56 · 388 阅读 · 0 评论 -
使用数组统计出访问日志中每个状态码的数量
[root@qls /service/scripts/day13]# cat g_array-2.sh#!/bin/bash#声明关联数组declare -A Array_Stateawk '{print $9}' access.log >access_state.log#循环赋值while read linedo let Array_State[${line}]++done < access_state.log#遍历与循环for i in ${!Array_Stat原创 2020-05-10 22:43:04 · 220 阅读 · 0 评论 -
使用数组统计出访问日志中每个IP的访问次数
[root@qls /service/scripts/day13]# cat g_array-1.sh#!/bin/bash#声明关联数组declare -A Array_Ips>ip.log#循环赋值while read linedo #Ip=$(echo $line |awk '{print $1}') 执行时间过长 let Array_Ips[${line%%\ *}]++done < access.log#遍历与循环for i in ${!Array_原创 2020-05-10 22:42:20 · 228 阅读 · 0 评论 -
使用数组取出系统中每一种shell的数量
[root@qls /service/scripts/day12]# cat array-2.sh#!/bin/bash#声明关联数组declare -A Array_Shells#批量赋值while read linedo #赋值 #Type=$(echo $line | awk -F: '{print $NF}') # /bin/bash 这个是索引 对应的值 次数 数字 let Array_Shells[${line##*:}]++done原创 2020-05-10 22:40:59 · 139 阅读 · 0 评论 -
Shell普通数组的应用
#赋值 1. 单个赋值 [root@qls /service/scripts/day12]# array1[0]=linux[root@qls /service/scripts/day12]# array1[1]=nginx[root@qls /service/scripts/day12]# array1[2]=php-fpm[root@qls /service/scripts/day12]# array1[3]=mariadb2. 赋值多个值 [root@qls /serv.原创 2020-05-10 22:39:00 · 136 阅读 · 0 评论 -
函数状态返回的语法案例
[root@qls /service/scripts/day12]# cat fun-1.sh#!/bin/bashfun1() { echo "1" return 2}a=$(fun1)echo "函数的状态码值为:$?"echo "函数的返回值(函数的执行输出结果):$a"[root@qls /service/scripts/day12]# sh fun-1.sh函数的状态码值为:2函数的返回值(函数的执行输出结果):1#return场景示例[root@qls.原创 2020-05-10 22:36:55 · 153 阅读 · 0 评论 -
批量检查多个网站地址是否正常
要求:shell数组方法实现,检测策略尽量模拟用户访问思路http://www.driverzeng.comhttp://www.taobao.comhttp://www.increase93.comhttp://www.jddd.com [root@qls /service/scripts]# cat curl.sh#!/bin/bashWeb_Array=(http://www.driverzeng.com http://www.taobao.com http://www.incre原创 2020-05-10 22:35:49 · 664 阅读 · 0 评论