运维常用shell脚本

注意事项

  1. 开头加解释器"#/bin/bash"
  2. 语法缩进,开头用四个空格;多加注释说明。
  3. 命名规则:变量名大写、局部变量小写、函数名小写、名字能够体现实际作用。
  4. 默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。
  5. 脚本写完后一定要先调试再线上使用。

获取随机字符串(8位到32位)

  • 方法一
# echo $RANDOM|md5sum|cut -c 1-8
2d29dd8d
  • 方法二
# openssl rand -base64 4
2ET/fA==
  • 方法三
# cat /proc/sys/kernel/random/uuid|cut -c 1-8
7ccdc570

获取随机数字

  • 方法一
# cat /proc/sys/kernel/random/uuid|cksum|cut -c 1-8
37069808
  • 方法二
 openssl rand -base64 4|cksum|cut -c 1-8
20272150
  • 方法三
# echo $RANDOM|md5sum|cksum |cut -c 1-8
13997037
  • 方法四
# date +%N|cut -c 1-8
76635150

定义颜色输出字符创函数

#bin/bash
function echo_color() {
    read color
    if [ $color == "green" ]; then
        echo -e "\033[32;40m$color\033[0m"
    elif [ $color == "red" ]; then
        echo -e "\033[31;40m$color\033[0m"
    fi
}
echo_color

批量创建用户

#bin/bash
for USER in us_er{8..9}
do
    PASS=`echo $RANDOM|md5sum|cut -c 1-8`
    useradd $USER
    echo "$PASS"|passwd --stdin $USER
    echo -e "$USER:$PASS" >> user_list
    echo "$USER create successful!"
done

检查软件包是否安装

#!/bin/bash
if rpm -q sysstat &>/dev/null; then
    echo "sysstat is already installed."
else
    echo "sysstat is not installed!"
fi

检查服务状态

#!/bin/bash
PORT_C=$(ss -anu |grep -c 123)
PS_C=$(ps -ef |grep ntpd |grep -vc grep)
if [ $PORT_C -eq 0 -o $PS_C -eq 0 ]; then
    echo "内容" | mail -s "主题" 邮箱.com
fi

检查主机存活状态

#!/bin/bash  
IP_LIST="10 20 30 40"
for IP in $IP_LIST; do
    NUM=1
    while [ $NUM -le 3 ]; do
        if ping -c 1 192.168.1.$IP > /dev/null; then
            echo "192.168.1.$IP Ping is successful."
            break
        else
            # echo "$IP Ping is failure $NUM"
            FAIL_COUNT[$NUM]=192.168.1.$IP
            let NUM++
        fi
    done
    if [ ${#FAIL_COUNT[*]} -eq 3 ];then
        echo "${FAIL_COUNT[1]} Ping is failure!"
        unset FAIL_COUNT[*]
    fi
done

监控cpu、内存使用率

  • 监控cpu
#!/bin/bash
DATE=$(date +%F" "%H:%M)
IP=$( ifconfig br0|awk -F' ' 'NR==2{print $2}')
#IP=$(ifconfig eth0 |awk -F ' :+'   '/inet addr/{print $4}' )  # 只支持CentOS6
MAIL="example@mail.com"
if ! which vmstat &>/dev/null; then
    echo "vmstat command no found, Please install procps package." 
    exit 1
fi
US=$(vmstat |awk  'NR==3{print $13}' )
SY=$(vmstat |awk  'NR==3{print $14} ')
IDLE=$(vmstat |awk  'NR==3{print $15}')
WAIT=$(vmstat |awk  'NR==3{print $16}' )
USE=$(($US+$SY))
if [ $USE -ge 50 ]; then
    echo "
    Date: $DATE
    Host: $IP
    Problem: CPU utilization $USE" | mail -s "CPU Monitor" $MAIL
fi
  • 内存
#!/bin/bash
DATE=$(date +%F" "%H:%M)
IP=$( ifconfig br0|awk -F' ' 'NR==2{print $2}' )
#IP=$(ifconfig eth0 |awk -F  [ :]+   /inet addr/{print $4} )  
MAIL="example@mail.com"
TOTAL=$(free -m |awk  '/Mem/{print $2}' )
USE=$(free -m |awk  '/Mem/{print $3-$6-$7}' )
FREE=$(($TOTAL-$USE))
# 内存小于1G发送报警邮件
if [ $FREE -lt 1024 ]; then
    echo "
    Date: $DATE
    Host: $IP
    Problem: Total=$TOTAL,Use=$USE,Free=$FREE
    " | mail -s "Memory Monitor" $MAIL
fi
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值