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
原文地址:https://www.cnblogs.com/aniuzaixian/p/7683501.html