For循环示例

1. 批量探测10.0.0.0/24网段的所有主机是否存活,存活的主机的远程连接端口是否开放。

1. 1-254 进行循环探测254台主机

2. 使用什么命令探测主机是否存活

ping -c1 -W1 IP地址    返回值为0则表示主机存活

3. 再进行判断存活的主机的远程端口是否开放

[root@shell /scripts/shell-day31]# cat for-1.sh

#!/bin/bash

#1.引用函数库

[ -f /etc/init.d/functions ] && source /etc/init.d/functions || echo "函数库文件不存在!"

#2.定义变量

Ip_log=/tmp/ip.log

Port_log=/tmp/port.log

echo "探测日期为:$( date +%F)" >$Ip_log

echo "探测日期为:$( date +%F)" >$Port_log

#3.进行批量探测

for i in {1..254}

do

    #批量执行循环体

    {

    Ip=10.0.0.$i

    #4.进行判断主机是否存活

    ping -c1 -W1 $Ip &>/dev/null

    if [ $? -eq 0 ];then

        action "$Ip 主机是存活的.............." /bin/true

        echo "$Ip" >>$Ip_log

    fi

} &

sleep 0.1

done

wait

echo "IP地址扫描探测完毕!开始探测主机远程端口!"

for i in $(sed '1d' $Ip_log)

do

    State=$(nmap -p22 $i | awk '/^22/{print $2}')

    if [ $State == "open" ];then

        action "IP地址${i}的远程端口是开放的..." /bin/true

        echo "IP地址${i}的远程端口是开放的..." >>$Port_log

    else

        action "IP地址${i}的远程端口是关闭的..." /bin/false

    fi

done

[root@shell /scripts/shell-day31]# sh for-1.sh

10.0.0.60 主机是存活的..............                      [  OK  ]

10.0.0.254 主机是存活的..............                      [  OK  ]

IP地址扫描探测完毕!开始探测主机远程端口!

IP地址10.0.0.60的远程端口是开放的...                      [  OK  ]

IP地址10.0.0.254的远程端口是关闭的...                      [FAILED]

[root@shell /scripts/shell-day31]# cat /tmp/ip.log

探测日期为:2020-03-07

10.0.0.60

10.0.0.254

[root@shell /scripts/shell-day31]# cat /tmp/port.log

探测日期为:2020-03-07

IP地址10.0.0.60的远程端口是开放的...

2. 写一个上课随机点名脚本

1. 要有名单

2. 随机打印这些人员名单进行循环  随机数不能大于人员的总数并且随机数不能等于0


    [root@shell ~]# echo $(( $RANDOM % 30 + 1 ))

3. 将最后一次循环到的人员打印出来

[root@shell /scripts/shell-day31]# cat for-2.sh

#!/bin/bash

#1.统计文件的总行数

Number=$(wc -l student.txt |awk '{print $1}')

#2.指定循环的次数

read -p "请输入你要循环的次数:" Num

if [[ ! $Num =~ ^[0-9]+$ ]];then

    echo "你输入的不是一个整数!"

    exit

fi

#3.进行循环

for i in $(seq $Num)

do

    #4.定义一个随机数,随机数不能大于文件的总数且不能等于0

    Ran=$(( $RANDOM % $Number + 1 ))

    #5.开始循环打印

    sed -n "${Ran}p" student.txt

    sleep 0.2

done

Stu_Name=$(sed -n "${Ran}p" student.txt)

echo  "天玄子:$Stu_Name"

3. 针对数据库进行分库分表备份

mysqldump -uroot -p123 -B  库名  >database.sql

mysqldump -uroot -p123 库名 表名 >database_table.sql

备份所有的库和所有的表

[root@shell /scripts/shell-day31]# mysql -uroot -p123 -e "show databases;" |sed 1d |grep -v '.*schema'

mysql

test

wordpress

world

[root@shell /scripts/shell-day31]# mysql -uroot -p123 -e "use world;show tables;" | sed 1d

city

country

countrylanguage

[root@shell /scripts/shell-day31]# cat for-3.sh

#!/bin/bash

[ -f /etc/init.d/functions ] && source /etc/init.d/functions || echo "函数库文件不存在!"

#1.定义变量

DB_User=root

DB_Pass=123

DB_name=$(mysql -u$DB_User -p$DB_Pass -e "show databases;" |sed 1d |grep -v '.*schema')

Date=$(date +%F)

#2.备份数据库

for Database in $DB_name

do

    DB_path=/backup/$Database

    if [ ! -d $DB_path ];then

        mkdir -p $DB_path &>/dev/null

    fi

    #备份数据库

    mysqldump -u$DB_User -p$DB_Pass --single-transaction -B $Database >$DB_path/${Database}_${Date}.sql

    if [ $? -eq 0 ];then

        action "数据库${Database}备份成功..............." /bin/true

    else

        action "数据库${Database}备份失败..............." /bin/false

    fi

    #定义表的变量

    TB_name=$(mysql -u$DB_User -p$DB_Pass -e "use $Database;show tables;"|sed 1d)

    #备份表

    for Table in $TB_name

    do

        mysqldump -u$DB_User -p$DB_Pass --single-transaction  $Database $Table >$DB_path/${Database}_${Table}_${Date}.sql

        if [ $? -eq 0 ];then

            action "数据库${Database}中的${Table}表备份成功............" /bin/true

        else

            action "数据库${Database}中的${Table}表备份失败............" /bin/false

        fi

    done

done

[root@shell /scripts/shell-day31]# sh for-3.sh

数据库mysql备份成功...............                        [  OK  ]

数据库mysql中的columns_priv表备份成功............          [  OK  ]

数据库mysql中的db表备份成功............                    [  OK  ]

数据库mysql中的event表备份成功............                [  OK  ]

数据库mysql中的func表备份成功............                  [  OK  ]

数据库mysql中的general_log表备份成功............          [  OK  ]

数据库mysql中的help_category表备份成功............        [  OK  ]

数据库mysql中的help_keyword表备份成功............          [  OK  ]

数据库mysql中的help_relation表备份成功............        [  OK  ]

数据库mysql中的help_topic表备份成功............            [  OK  ]

数据库mysql中的host表备份成功............                  [  OK  ]

数据库mysql中的ndb_binlog_index表备份成功............      [  OK  ]

数据库mysql中的plugin表备份成功............                [  OK  ]

数据库mysql中的proc表备份成功............                  [  OK  ]

数据库mysql中的procs_priv表备份成功............            [  OK  ]

数据库mysql中的proxies_priv表备份成功............          [  OK  ]

数据库mysql中的servers表备份成功............              [  OK  ]

数据库mysql中的slow_log表备份成功............              [  OK  ]

数据库mysql中的tables_priv表备份成功............          [  OK  ]

数据库mysql中的time_zone表备份成功............            [  OK  ]

数据库mysql中的time_zone_leap_second表备份成功............ [  OK  ]

数据库mysql中的time_zone_name表备份成功............        [  OK  ]

数据库mysql中的time_zone_transition表备份成功............  [  OK  ]

数据库mysql中的time_zone_transition_type表备份成功.........[  OK  ]

数据库mysql中的user表备份成功............                  [  OK  ]

数据库test备份成功...............                          [  OK  ]

数据库wordpress备份成功...............                    [  OK  ]

数据库wordpress中的wp_commentmeta表备份成功............    [  OK  ]

数据库wordpress中的wp_comments表备份成功............      [  OK  ]

数据库wordpress中的wp_links表备份成功............          [  OK  ]

数据库wordpress中的wp_options表备份成功............        [  OK  ]

数据库wordpress中的wp_postmeta表备份成功............      [  OK  ]

数据库wordpress中的wp_posts表备份成功............          [  OK  ]

数据库wordpress中的wp_term_relationships表备份成功.........[  OK  ]

数据库wordpress中的wp_term_taxonomy表备份成功............  [  OK  ]

数据库wordpress中的wp_termmeta表备份成功............      [  OK  ]

数据库wordpress中的wp_terms表备份成功............          [  OK  ]

数据库wordpress中的wp_usermeta表备份成功............      [  OK  ]

数据库wordpress中的wp_users表备份成功............          [  OK  ]

数据库world备份成功...............                        [  OK  ]

数据库world中的city表备份成功............                  [  OK  ]

数据库world中的country表备份成功............              [  OK  ]

数据库world中的countrylanguage表备份成功............      [  OK  ]

[root@shell /scripts/shell-day31]# ll /backup/

total 8

drwxr-xr-x 2 root root 4096 2020-03-07 11:13 mysql

drwxr-xr-x 2 root root  33 2020-03-07 11:13 test

drwxr-xr-x 2 root root 4096 2020-03-07 11:13 wordpress

drwxr-xr-x 2 root root  147 2020-03-07 11:13 world

[root@shell /scripts/shell-day31]# ll /backup/mysql/

total 1076

-rw-r--r-- 1 root root 514805 2020-03-07 11:17 mysql_2020-03-07.sql

-rw-r--r-- 1 root root  2374 2020-03-07 11:17 mysql_columns_priv_2020-03-07.sql

-rw-r--r-- 1 root root  3588 2020-03-07 11:17 mysql_db_2020-03-07.sql

-rw-r--r-- 1 root root  3661 2020-03-07 11:17 mysql_event_2020-03-07.sql

-rw-r--r-- 1 root root  2023 2020-03-07 11:17 mysql_func_2020-03-07.sql

-rw-r--r-- 1 root root  2049 2020-03-07 11:17 mysql_general_log_2020-03-07.sql

-rw-r--r-- 1 root root  3249 2020-03-07 11:17 mysql_help_category_2020-03-07.sql

-rw-r--r-- 1 root root  9600 2020-03-07 11:17 mysql_help_keyword_2020-03-07.sql

-rw-r--r-- 1 root root  11831 2020-03-07 11:17 mysql_help_relation_2020-03-07.sql

-rw-r--r-- 1 root root 467162 2020-03-07 11:17 mysql_help_topic_2020-03-07.sql

-rw-r--r-- 1 root root  3263 2020-03-07 11:17 mysql_host_2020-03-07.sql

-rw-r--r-- 1 root root  2126 2020-03-07 11:17 mysql_ndb_binlog_index_2020-03-07.sql

-rw-r--r-- 1 root root  1875 2020-03-07 11:17 mysql_plugin_2020-03-07.sql

-rw-r--r-- 1 root root  3549 2020-03-07 11:17 mysql_proc_2020-03-07.sql

-rw-r--r-- 1 root root  2460 2020-03-07 11:17 mysql_procs_priv_2020-03-07.sql

-rw-r--r-- 1 root root  2499 2020-03-07 11:17 mysql_proxies_priv_2020-03-07.sql

-rw-r--r-- 1 root root  2189 2020-03-07 11:17 mysql_servers_2020-03-07.sql

-rw-r--r-- 1 root root  2189 2020-03-07 11:17 mysql_slow_log_2020-03-07.sql

-rw-r--r-- 1 root root  2562 2020-03-07 11:17 mysql_tables_priv_2020-03-07.sql

-rw-r--r-- 1 root root  1934 2020-03-07 11:17 mysql_time_zone_2020-03-07.sql

-rw-r--r-- 1 root root  2008 2020-03-07 11:17 mysql_time_zone_leap_second_2020-03-07.sql

-rw-r--r-- 1 root root  1922 2020-03-07 11:17 mysql_time_zone_name_2020-03-07.sql

-rw-r--r-- 1 root root  2059 2020-03-07 11:17 mysql_time_zone_transition_2020-03-07.sql

-rw-r--r-- 1 root root  2201 2020-03-07 11:17 mysql_time_zone_transition_type_2020-03-07.sql

-rw-r--r-- 1 root root  5702 2020-03-07 11:17 mysql_user_2020-03-07.sql

4. 判断数据库主从复制是否异常脚本

1. 判断IO和SQL线程是否都为Yes

2. 如果不是Yes就是主从复制异常,发送邮件给管理员

3. 再去判断是IO线程问题还是SQL线程问题

4. 自动化的解决一些简单的问题

5. 从库写入 ,这个问题怎么解决  1007  可以不可以执行一次跳过的命令。

准备主从复制环境

[root@db02 ~]# cat mysql_zhucong.sh

#!/bin/bash

#1.定义变量

IO_Status=$(mysql -uroot -p123 -e "show slave status\G" |awk '/Slave_IO_Running/{print $NF}')

SQL_Status=$(mysql -uroot -p123 -e "show slave status\G" |awk '/Slave_SQL_Running/{print $NF}')

#2.判断主从是否异常

if [ $IO_Status == "Yes" -a $SQL_Status == "Yes" ];then

    echo "主从复制正常!"

else

    #3.判断IO线程是否正常

    if [ $IO_Status == "Yes" ];then

        echo "主从复制IO线程正常!"

    else

        echo "主从复制IO线程异常!"

        mysql -uroot -p123 -e "show slave status\G" |grep "Last_IO" >/tmp/io_err.log

        mail -s "test"  xxxxx@qq.com < /tmp/io_err.log

        if [ $? -eq 0 ];then

            echo "邮件已发送给管理员!"

        else

            echo "邮件发送失败!"

        fi

    fi

    #4.判断SQL线程是否正常

    if [ $SQL_Status == "Yes" ];then

        echo "主从复制SQL线程正常!"

    else

        echo "主从复制SQL线程异常!"

        SQL_Err=$(mysql -uroot -p123 -e "show slave status\G" |awk '/Last_SQL_Errno/{print $NF}')

        case $SQL_Err in

            1007)

                echo "脚本判断,SQL线程出错为从库写入!脚本尝试进行一次跳过错误来解决问题!"

                mysql -uroot -p123 -e "stop slave;set global sql_slave_skip_counter=1;start slave;"

                SQL_Status=$(mysql -uroot -p123 -e "show slave status\G" |awk '/Slave_SQL_Running/{print $NF}')

                if [ $SQL_Status == "Yes" ];then

                    echo "脚本已经成功的执行一次跳过!主从复制正常!"

                    echo "脚本已经成功的执行一次跳过!主从复制正常!" | mail -s "主从复制SQL线程报错!尝试跳过一次成功!" xxxxx@qq.com

                else

                    echo "脚本尝试跳过一次错误!但是主从复制还是异常!"

                    mysql -uroot -p123 -e "show slave status\G" |grep "Last_SQL" >/tmp/sql_err.log

                    mail -s "test"  xxxxx@qq.com < /tmp/sql_err.log

                    if [ $? -eq 0 ];then

                        echo "邮件已发送给管理员!"

                    else

                        echo "邮件发送失败!"

                    fi

                fi

                ;;

            *)

                echo "脚本判断,SQL线程出错!脚本无法解决故障!"

                mysql -uroot -p123 -e "show slave status\G" |grep "Last_SQL" >/tmp/sql_err.log

                mail -s "test"  xxxxx@qq.com < /tmp/sql_err.log

                if [ $? -eq 0 ];then

                    echo "邮件已发送给管理员!"

                else

                    echo "邮件发送失败!"

                fi

        esac

    fi

fi

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,039评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,426评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,417评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,868评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,892评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,692评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,416评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,326评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,782评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,957评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,102评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,790评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,442评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,996评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,113评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,332评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,044评论 2 355