运维脚本---------使用ssh远程登陆所有主机并检测
1、在监测端创建ssh公钥,并将公钥发送到所有被检测端
#命令行输入 ssh-keygen #后面一直回车 #会在当前目录的./ssh下生成密钥对 #将公钥(id_rsa.pub)发送给被监控端 ssh-copy-id root@被监控端IP
#需要输入远程被监控端IP的密码,才能发送过去
#利用私钥登陆被监控端
ssh -i .ssh/id_rsa root@被监控端IP
2、创建一个host.info文件,并在其中存放被检测端的所有信息格式信息:
ip 用户名 端口号
3、自动远程登陆被监控端
# 1、获取磁盘使用率 # 2、监控多台磁盘使用率,利用ssh进行。一台作为服务监控端,其他作为被监控端。 # 3、配置免输入密码,监控端生成密钥,将公钥拷贝给被监控端,公钥一般存放在.ssh/id_rsa #! /bin/bash HOST_INFO=host.info for IP in $(awk '/^[^#]/{print $1}' $HOST_INFO);do USER=$(awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO) PORT=$(awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO) TMP_FILE=/tmp/disk.tmp ssh -p $PORT $USER@IP 'df -h' > $TMP_FILE USE_RATE_LIST=$(awk 'BEGIN{OFS="="}/^\/dev/{print $NF,int($5)}' $TMP_FILE) for USE_RATE in $USE_RATE_LIST;do PART_NAME=${USE_RATE%=*} USE_RATE=${USE_RATE#*=} if [ $USE_RATE -ge 80];then echo "Warning: $PART_NAME Partition usage $USE_RATE%!" fi done done #host.info 分为三列 ip列 用户名列 端口列