[工具] Shell 检测服务器 CPU 占用率并报警写入日志

介绍:

#名称:检测服务器 CPU 占用率并报警写入日志
#作用:检测服务器 CPU 占用率并报警写入日志

#使用方法:
#1. 在此脚本的分割线内写入相应的内容
#2. 给此脚本添加执行权限
#3. 将此脚本添加到周期性计划任务里
#4. 如果 CPU 占用率超过了报警值则将报警信息写入 /var/log/message

脚本分割线里的变量:
cputhreshold=95 #CPU 报警的占比值

脚本:

#!/bin/bash

####################### Separator ########################
cputhreshold=95
####################### Separator ########################

cpumonitor() {
cpu=`top -n 1 -b | grep Cpu | awk -F, '{print $1}'| awk -F: '{print $2}'| awk '{print $1}'`

if [ `echo "$cpu > $1"|bc` -ne 0 ]
then
        logger "CPU_Alarm CPU until $cpu"
fi
}

cpumonitor $cputhreshold

[工具] Shell 批量检测服务器 TCP 端口的联通状态 (nc 版)

介绍:

作者:朱明宇
名称:批量检测服务器 TCP 端口的联通状态
作用:批量检测服务器 TCP 端口的联通状态

使用方法:
1. 端口清单 $portlist 每一个端口占用一行,格式为:<要联通端口号对应的 IP 地址>:<要联通的端口号>:<端口功能>
2. 在此脚本的分割线内写入相应的内容,并和此脚本放在同一目录下
3. 给此脚本添加执行权限
4. 执行此脚本,并将要测试的服务器 IP 地址跟在脚本的后面,例:. <脚本名> <服务器 IP 地址 1> <服务器 IP 地址 2> ……

脚本分割线里的变量:
portlist=tcp_ports.txt #存放要测试的 TCP 端口的文件

注意:
1. 此脚本执行前必须要先保证执行本脚本的用户能无密码 ssh 远程这些远程服务器
2. 执行此脚本前确保 nc 命令已经安装

脚本:

#!/bin/bash

####################### Separator ########################

portlist=tcp_ports.txt

####################### Separator ########################

for hosts in $*
do

        echo $hosts
        ssh $hosts "which nc" &> /dev/null

        if [ $? -ne 0 ];then
                echo -e "\033[31m$hosts can not use nc !!!!!!!!!!\033[0m"
                continue
        fi

        for line in `cat $portlist`
        do
                ips=`echo $line | awk -F':' '{print $1}'`
                ports=`echo $line | awk -F':' '{print $2}'`
                remarks=`echo $line | awk -F':' '{print $3}'`

                ssh $hosts "nc -z -w 3 $ips $ports"

                if [ $? -ne 0 ];then
                        echo -e "\033[31m$ips $ports $remarks can not be connected !!!!!!!!!!\033[0m"
                else
                        echo -e "\033[32m$ips $ports $remarks can be connected\033[0m"
                fi

        done

done

[工具] Shell 查看可以无密码登陆系统的用户

脚本:

作者:朱明宇
名称:查看可以无密码登陆系统的用户
作用:查看可以无密码登陆系统的用户

使用方法:
1. 给此脚本添加执行权限
2. 执行此脚本

介绍:

#!/bin/bash

for name in `egrep '^.*\:!!\:.*$|^.*\:\*\:.*$' /etc/shadow | cut -d : -f 1`
do
        egrep '/sbin/nologin|/bin/false' /etc/passwd | egrep $name > /dev/null

        if [ $? -ne 0 ];then
                envi=`grep $name /etc/passwd | cut -d : -f 7`
                echo "$name has no password but maybe can access system, it is $envi"
        fi

done

[工具] Shell 检测服务器 SSH 端口的联通状态

介绍

#作者:朱明宇
#名称:检测服务器 SSH 端口的联通状态
#作用:检测服务器 SSH 端口的联通状态

#使用方法:
#1. 在此脚本的分割线内写入相应的内容
#2. 给此脚本添加执行权限
#3. 执行此脚本
#4. 如果联通检测失败则会将结果写入脚本同目录下的 checkserver.txt

脚本分割线里的变量:
host=”8.8.8.8″ #需要检测 SSH 端口联通性的服务器 IP 地址

脚本:

#!/bin/bash

####################### Separator ########################

host="8.8.8.8"

####################### Separator ########################

checktime=`date +%Y-%m-%d-%H-%M`
sleep 2 | telnet $host 22 | grep SSH

if [ $? -ne 0 ];then
	echo "$checktime server timeout" >> checkserver.txt
fi