zoukankan      html  css  js  c++  java
  • shell 多台服务器收集错误日志

    1.多台服务器收集错误日志

    #!/bin/bash
    
    DATE=`date +%Y%m%d-%H%M%S`
    cd `dirname $0`
    HOME_DIR=`pwd`
    
    log=$HOME_DIR/logs/httpload_hive.log
    
    ARR_IP=(
    "10.0.0.1" 
    "10.0.0.2" 
    "10.0.0.3" 
    )
    
    ARR_PASSWORD=(
    "1qaz2wsx" 
    "1qaz2wsx" 
    "1qaz2wsx" 
    )
    
    ARR_NAME=(
    "master.hadoop.dc" 
    "slave1.hadoop.dc" 
    "slave2.hadoop.dc" 
    )
    
    ARR_LEN=${#ARR_IP[*]}
    i=0
    while [ $i -lt ${ARR_LEN} ]
    do 
    echo -e "
    
    33[0;32;1m--------------${ARR_NAME[i]}:${ARR_IP[i]}-----------------------e[0m
    
    " |tee -a $log
    expect - << EOF > $HOME_DIR/logs/tmp.log
    spawn ssh -l root ${ARR_IP[i]}
    set timeout 30
    expect {
      "(yes/no)?"  { send "yes
    " }
      "password"   { send "${ARR_PASSWORD}
    "}
    }
    expect "]#"
    send -- "sh /home/work/httpload_hive.sh
    "
    expect "]#"
    send -- "cat /home/work/httpload_hive.log
    " 
    send "exit
    "
    expect eof
    EOF
    
    cat $HOME_DIR/logs/tmp |grep -v logout |grep -v Last |grep -v password |tee -a $log
    let i++
    done
    
    rm -rf $HOME_DIR/logs/tmp

    2.去重日志的错误信息

    #脚本名称:httpload_hive.sh
    #!/bin/bash cd `dirname $0` HOME_DIR=`pwd` DATE=`date +%F` HTTP_DIR="/home/work/httpload" grep "[$DATE" ${HTTP_DIR}/httpload.log |grep -E "ERROR|WARN" > ${HOME_DIR}/tmp.log awk -F " " '!a[$5]++' ${HOME_DIR}/tmp.log > ${HOME_DIR}/httpload_hive.log rm -rf ${HOME_DIR}/httpload_hive.log

    3.多台服务器传送文件

    #!/bin/bash
    #!/usr/bin/expect
    
    cd `dirname $0`
    HOME_DIR=`pwd`
    host_list=${HOME_DIR}/server_list.conf
    cat ${host_list} |while read line
    do 
      host_ip=`echo $line` |awk '{ print $1}'
      #新建文件夹
      ./allmkdir.sh $host_ip
      #复制文件到当前目录
      ./allscp.sh $host_ip
     done

    server_list.conf文件

    10.0.0.1
    10.0.0.2
    10.0.0.3
    10.0.0.4
    10.0.0.5
    10.0.0.6

    4.单台服务器新建文件夹

    #脚本名称:allmkdir.sh

    #!/usr/bin/expect set host [lindex $argv 0] set timeout 3 spawn ssh root@$host expect { "*(yes/no)?" { send "yes " } "*password:" { send "1qaz2wx" } } expect "*#" send "mkdir -p /home/work/logs" expect eof

    5.单台服务器传递文件

    #脚本名称:allscp.sh
    #!/usr/bin/expect
    
    FILE="httpload_hive.sh"
    HOME_DIR="/home/work/"
    
    set host [lindex $argv 0]
    set timeout 3
    spawn scp ${HOME_DIR}${FILE} root@$host:${HOME_DIR}${FILE}
    expect {
      "*(yes/no)?" {
        send "yes
    "
        expect "password:" { send "1qaz2wsx
    "}    
      }
      "*password:" { send "1qaz2wx" }
    }
    expect "100%"
    expect eof
  • 相关阅读:
    webpack + vue 向本地后端发送http请求跨域问题
    用FileReader对象从本地读取文件
    oninput与onchange比较
    height: 100% 无效问题
    关于html布局
    圣诞节给自己的犒劳
    django学习之——模版
    django学习之——我的 Hello World
    django学习之——创建项目
    python and pycharm and django 环境配置
  • 原文地址:https://www.cnblogs.com/aniuzaixian/p/7683501.html
Copyright © 2011-2022 走看看