慕课网shell实战笔记

shell脚步源代码:

[[email protected]_ECS imooc_shell]$ ls
check_http_log.sh  check_nginxserver.sh  master_control.sh  system_info.sh

master_control.sh:为主控脚步,其它脚步由此脚本调用

##############################################
# File Name: master_control.sh
# Author: liuxiao
# Mail: [email protected]
# Created Time: 2016-08-16 14:55
##############################################
#!/bin/bash
declare -A ssharray
i=1
numbers="0"

for script_file in `ls -I "master_control.sh" ./`
do
    echo -e "\e[1;34mThe Script: ${i} ==> \e[0m""\e[1;35m${script_file}\e[0m"
    grep -E "^\#Program function" ${script_file}
    ssharray[$i]=${script_file}
    numbers="${numbers} | ${i}"
    i=$((i+1))
done

while true
do
    read -p "Please input a number,the ‘0‘ is exit, [ ${numbers} ]: " execshell
    if [[ ! ${execshell} =~ ^[0-9]+ ]];then
        exit 0
    fi
    if [ $execshell -eq 0 ];then
        exit 0
    else
        /bin/bash ./${ssharray[$execshell]}
    fi
done

system_info.sh:显示系统的一些信息

##############################################
# File Name: system_info.sh
# Author: liuxiao
# Mail: [email protected]
# Created Time: 2016-08-16 19:30
##############################################
#!/bin/bash
#Program function:Display some system information.
clear
OS_bit=$(uname -m)
    echo -e "\e[1;34mOS_bit ==> \e[1;32m$OS_bit\e[0m"
OS_release=$(lsb_release -a | grep Description | cut -f 2)
    echo -e "\e[1;34mOS_release ==> \e[1;32m$OS_release\e[0m"
Kernel_release=$(uname -r)
    echo -e "\e[1;34mKernel_release ==> \e[1;32m$Kernel_release\e[0m"
echo

#Network card info
Net_card_name=$(ip addr | grep inet | awk ‘{print $NF}‘)
Net_card_ip=$(ip addr | grep inet | awk ‘{print $2}‘ | cut -f 1 -d "/")
i=0;j=0
for name in $Net_card_name   #将所有网卡的名称放入name_array数组中
do
    name_array[i]=$name
    i=$((i+1))
done
for ip in $Net_card_ip   #将所有网卡的IP放入ip_array数组中
do
    ip_array[j]=$ip
    j=$((j+1))
done
i=0;j=0
for time in $Net_card_name   #打印网卡名称和对应的IP,time为控制循环次数的变量
do
    echo -e "\e[1;34m${name_array[i]} ==> \e[1;32m${ip_array[j]}\e[0m" 
    i=$((i+1));j=$((j+1))
done
echo

#Network status
ping -c 2 www.baidu.com &>/dev/null && echo -e "\e[1;34mNetwork connection is OK\e[0m" || echo -e "\e[1;34mNetwork connection is False\e[0m"
echo

#Logged Users
echo -e "\e[1;34mLogged Users\e[0m"
echo -e "\e[1;34m`who`\e[0m"
echo

#Mem_usages
system_mem_usage=$(awk ‘/MemTotal/{total=$2}/MemFree/{free=$2}END{print (total-free)/1024}‘ /proc/meminfo)  #系统已经使用的内存
apps_mem_usage=$(awk ‘/MemTotal/{total=$2}/MemFree/{free=$2}/^Cache/{cached=$2}/Buffers/{buffers=$2}END{print (total-free-cached-buffers)/1024}‘ /proc/meminfo)  #应用程序使用的内存
echo -e "\e[1;34mSystem_mem_usage ==> \e[1;32m${system_mem_usage}M\e[0m"
echo -e "\e[1;34mApps_mem_usage ==> \e[1;32m${apps_mem_usage}M\e[0m"
echo

#Load average
load_average=$(top -n 1 -b | grep "load average:" | awk ‘{print $12 $13 $14}‘)
echo -e "\e[1;34mLoad_average ==> \e[1;32m${load_average}\e[0m"
echo

#Disk info
disk_info=$(df -hP | grep -vE "Filesystem|tmpfs" | awk ‘{print $1 "  " $5}‘)
echo -e "\e[1;34mdisk_info:\n\e[1;32m${disk_info}\e[0m"

check_nginxserver.sh:检查Nginx状态

##############################################
# File Name: check_nginxserver.sh
# Author: liuxiao
# Mail: [email protected]
# Created Time: 2016-08-20 10:44
##############################################
#Program function:Check Nginxserver Status Code.
#!/bin/bash
Nginxserver=‘http://www.baidu.com‘
Check_Nginx_Server()
{
    echo -e "\e[1;34mNginxserver = \e[1;32m${Nginxserver}\e[0m"
    Status_code=`curl -m 5 -s -w %{http_code} ${Nginxserver} -o /dev/null`
    echo -e "\e[1;34mStatus_code = \e[1;32m${Status_code}\e[0m"
    if [ $Status_code -ne 200 ];then
        echo -e "\e[1;34mThe HTTP Status Code is abnormal,Please check your Nginxserver\e[0m"
    elif [ $Status_code -eq 200 ];then
        echo -e "\e[1;34mThe Nginxserver is OK\e[0m"
    fi
}
Check_Nginx_Server

check_http_log.sh:检查http访问日志

##############################################
# File Name: chech_http_log.sh
# Author: liuxiao
# Mail: [email protected]
# Created Time: 2016-08-19 21:59
##############################################
#Program function:Nginx‘s log analysis
#!/bin/bash
Logfile_path=‘/home/wwwroot/index/log/access.log‘

Check_http_status()
{
    Http_status_codes=(`cat $Logfile_path | grep -ioE "HTTP\/1\.[1|0]\"[[:blank:]][0-9]{3}" | awk -F‘[ ]+‘ ‘{
        if($2>=100&&$2<200)
            {i++}
        else if($2>=200&&$2<300)
            {j++}
        else if($2>=300&&$2<400)
            {k++}
        else if($2>=400&&$2<500)
            {n++}
        else if($2>=500)
            {p++}
        }END{
            print i?i:0,j?j:0,k?k:0,n?n:0,p?p:0,i+j+k+n+p
            }‘
        `)
    echo -e "\e[1;34mThe number of http status[100+]: \e[1;32m${Http_status_codes[0]}\e[0m"
    echo -e "\e[1;34mThe number of http status[200+]: \e[1;32m${Http_status_codes[1]}\e[0m"
    echo -e "\e[1;34mThe number of http status[300+]: \e[1;32m${Http_status_codes[2]}\e[0m"
    echo -e "\e[1;34mThe number of http status[400+]: \e[1;32m${Http_status_codes[3]}\e[0m"
    echo -e "\e[1;34mThe number of http status[500+]: \e[1;32m${Http_status_codes[4]}\e[0m"
    echo -e "\e[1;34mAll request numbers: \e[1;32m${Http_status_codes[5]}\e[0m"
}

Check_http_code()
{
    Http_Code=(`cat $Logfile_path | grep -ioE "HTTP\/1\.[1|0]\"[[:blank:]][0-9]{3}" | awk -v total=0 -F ‘[ ]+‘ ‘{
        if($2!="")
            {code[$2]++;total++}
        else
            {exit}
        }END{
            print code[404]?code[404]:0,code[403]?code[403]:0,total
        }‘`)
    echo -e "\e[1;34mThe number of http status[404]: \e[1;32m${Http_Code[0]}\e[0m"
    echo -e "\e[1;34mThe number of http status[403]: \e[1;32m${Http_Code[1]}\e[0m"
    echo -e "\e[1;34mAll request numbers: \e[1;32m${Http_Code[2]}\e[0m"
}

Check_http_status
Check_http_code
时间: 2024-10-13 12:52:20

慕课网shell实战笔记的相关文章

AngularJs学习笔记-慕课网AngularJS实战

第1章 快速上手 放弃了IE8以及以下,不支持. 4大核心特性: 1.MVC Model: 数据模型 View:视图 Controller:业务逻辑和控制逻辑 好处:职责清晰,模块化. 2.模块化 3.指令系统 (AngularJs特有的) 4.双向数据绑定(AngularJs特有的) 第2章 基本概念和用法 第3章 核心原理解析 第4章 用AngularJS开发移动APP 第5章 前端自动化测试 TDD(测试驱动开发) 课程地址:http://www.imooc.com/view/156

慕课网最新实战课vue2.0只需9.9即可购买

加QQ:2916329516即可购买 也可扫码加 vue2.0实战课从基础到项目带你开发去哪儿app 走过路过不要错过   原价:¥266.00  现价:¥9.9  点击试看 密码: 3xts 带你入门vue2.0开发一个数字产品电商平台 走过路过不要错过   原价:¥128.00  现价:¥9.9  点击试看 密码: j6p8 Vue高仿饿了么APP 点击试看 密码: ggv6 走过路过不要错过   原价:¥198.00  现价:¥9.9  Vue2.0实战高级-开发移动音乐WebApp 点击

学习慕课网ES6实战项目遇到的问题————呱呱二号

看到这个问题之后,应该将scripts.js 这个文件的红色区域修改饥渴

【慕课网实战】Spark Streaming实时流处理项目实战笔记二十之铭文升级版

铭文一级: Spring Boot整合Echarts动态获取HBase的数据1) 动态的传递进去当天的时间 a) 在代码中写死 b) 让你查询昨天的.前天的咋办? 在页面中放一个时间插件(jQuery插件),默认只取当天的数据2) 自动刷新展示图 每隔多久发送一个请求去刷新当前的数据供展示 统计慕课网当天实战课程从搜索引擎过来的点击量 数据已经在HBase中有的 自己通过Echarts整合Spring Boot方式自己来实现 铭文二级: 在Spring Boot项目pom.xml下引入<repo

shell 脚本实战笔记(8)--ssh免密码输入执行命令

前言: ssh命令, 没有指定密码的参数. 以至于在脚本中使用ssh命令的时候, 必须手动输入密码, 才能继续执行. 这样使得脚本的自动化执行变得很差, 尤其当ssh对应的机器数很多的时候, 会令人抓狂.本文讲解了两种方式, 一种借助expect脚本, 一种借助sshpass来实现. *) 借助expect脚本来实现1. expect不是系统自带的工具, 需要安装yum install expect -y 2. expect脚本的编写规则 1. [#!/usr/bin/expect] 告知系统脚

shell 脚本实战笔记(7)--集群网络相关知识和环境搭建

前言: 对网络相关的知识, 做下笔记. 包括IP地址A/B/C的分类, 静态地址的配置/DNS配置, 以及网卡相关信息查看. *) A/B/C/D类网络地址的划分 IP地址=网络地址+主机地址 或 IP地址=主机地址+子网地址+主机地址 IPv4的地址划分, 可以分为5种类型, A/B/C/D/E类 A类地址: 由1字节的网络地址和3字节主机地址组成, 网络地址最高位必须是"0", 地址范围从1.0.0.0到126.0.0.0. A类网络有126个, 每个网络能容纳1亿多个主机. B类

shell 脚本实战笔记(6)--集群环境配置检测

1). 背景: 集群部署的时候, 需要一致的配置和环境设置. 对于虚拟机集群, 可以借助镜像拷贝, 复制和还原集群机器. 对与物理机集群而言, 则不一样, 如果机器一多, 多人去操作和配置, 对于成熟精干的团队还好, 对于不熟悉环境的小团队, 由于水平的参差不齐, 往往会导致不一致的环境. 因此无论如何, 写脚本进行自动化的配置和环境校验总是最佳实践. 2). 假设应用场景:*) 系统环境: 安装CDH5, 集群规模为16台机器, 每台机器16CPU, 内存16G, 2块SATA盘共500G,

shell 脚本实战笔记(3)--集群机器的时间同步设置

背景: 有些分布式服务(比如HBase服务), 依赖于系统时间戳, 如果集群各个节点, 系统时间不一致, 导致服务出现诡异的情况. 解决方案: 那如何同步集群各个节点之间的时间? 采用NTP(Network Time Protocol)方式来实现, 选择一台机器, 作为集群的时间同步服务器, 然后分别配置服务端和集群其他机器 1.NTP服务端 *) 安装ntp服务 yum install ntp *) 配置/etc/ntp.conf 这边采用本地机器作为时间的原点 注释server列表 #ser

shell 脚本实战笔记(11)--Mysql在linux下的安装和简单运维

前言: linux中安装mysql以及配置的管理, 基础的运维和管理还是需要会一些的. 这边作下笔记, 以求天天向上(^_^). 安装流程:*). 安装mysql-server1). 借助yum检索相关的mysql rpm包yum search mysqlmysql-server.x86_64 正是我们想要的 2). 安装mysql-serveryum install mysql-server.x86_64 -y默认mysql-client也安装好 3). 启动mysql服务/etc/init.