Get Log

#!/bin/bash
echo "This is a small script to extract log from server group"
####Current Date
CurDate=$(date +%Y%m%d)
echo "Current Date: "$CurDate
#EPO="V-xxxO"
EPO="T-xxxO"
 
 
MyServers=$1
 
MyDateTimes=$2
###Test value
#MyServers="ArenaD01 Dungeon01 WorldD01"
#MyDateTimes="2018/05/25-17:00:30 2018/05/25-17:00:00"
#MyDateTimes="2018/06/05-17:00:30"
#CurDate=$CurDate'-Test'
 
echo 'MyServers: '$MyServers
echo 'MyDateTimes: '$MyDateTimes
echo ====================================================================================
 
 
 
####check minion return
check_minion_return() {
 
if [[ $Res == *"No response"* ]]; then
        echo $MyServer " No response"
        #exit
else
    echo $Res
fi
 
}
 
####push log
MyServers_arr=($MyServers)
for MyServer in ${MyServers_arr[@]}; do
    {
    UploadName=$MyServer
    MyDateTimes_arr=($MyDateTimes)
    for MyDateTime in ${MyDateTimes_arr[@]}; do
    {
        MyDate=$(date -d $(echo $MyDateTime | cut -d "-" -f 1) +%Y%m%d)
        MyTime=$(echo $MyDateTime | cut -d "-" -f 2)
        MyHour=$(date -d $(echo $MyDateTime | cut -d "-" -f 2) +%H)
        MyMin=$(date -d $(echo $MyDateTime | cut -d "-" -f 2) +%M)
        MySec=$(date -d $(echo $MyDateTime | cut -d "-" -f 2) +%S)
        echo $MyHour $MyMin $MySec
        echo $MyDateTime
        echo $MyDate
        
        if   [ "$MyHour" == "00" ] && [ "$MyMin" == "00" ] && [ "$MySec" == "00" ] ; then
            MyDate=$(date -d ""$MyDate" -1 day"  +%Y%m%d )
            MyHour=$(date -d ""$MyHour" -1 hour"  +%H )
            echo "Query Date: "$MyDate
            echo "Query Hour: "$MyHour
        elif [ "$MyHour" != "00" ] && [ "$MyMin" == "00" ] && [ "$MySec" == "00" ]  ; then
            MyHour=$(date -d ""$MyHour" -1 hour"  +%H )
            echo "Query Hour: "$MyHour
        fi
        #special servers, like AdminWeb
        if [ $MyServer == "AdminWeb" ]; then
            MyDateTime_NoMin=$(date -d $(echo $MyDateTime | cut -d "-" -f 1) +%Y-%m-%d)"T"$MyHour":"${MyMin%?}
            echo $MyDateTime_NoMin
            Query_Log_Name=$MyDate
        else
            MyDateTime_NoSec=${MyDateTime%:*}
            MyDateTime_NoMin=${MyDateTime_NoSec%?}
            Query_Log_Name=$MyDate'-'$MyHour
        fi
        
        logName=$(salt $MyServer cmd.run 'pushd E:\log\ && findstr /s /i /m /c:"'$MyDateTime_NoSec'" *'$Query_Log_Name'*.log | find /v "client" | find /v "guard"')
        Res=$logName
        check_minion_return
 
        logPath=$(echo "E:\\log\\"$(echo $logName |  cut -d ":" -f 2 |cut -d " " -f 2))
 
        Res=$(salt $MyServer cmd.run 'xcopy '$logPath' E:\'$UploadName'\ /y ')
        check_minion_return
 
        echo 'pushd E:\log\ && findstr /s /i /m /c:"'$MyDateTime_NoSec'" *'$Query_Log_Name'*.log | find /v "client" | find /v "guard"'
        echo "E:\\log\\"$(echo $logName |  cut -d ":" -f 2 |cut -d " " -f 2)
        echo 'xcopy '$logPath' E:\'$UploadName'\ /y '
 
        echo ====================================================================================
    }&
    done
    wait
 
    Res=$(salt $MyServer cmd.run 'pushd E:\ &&  7z a '$UploadName'.7z '$UploadName)
    check_minion_return
    Res=$(salt $MyServer cp.push 'E:\'$UploadName'.7z')
    check_minion_return
    Res=$(salt $MyServer cmd.run 'pushd E:\ &&  rd /s /q  '$UploadName' && del '$UploadName'.7z')
    check_minion_return
 
 
 
    mv -f '/var/cache/salt/master/minions/'$UploadName'/files/'$UploadName'.7z' /srv/salt
    Res=$(salt $EPO cmd.run 'mkdir C:\Log_to_xx\'$CurDate'\')
    check_minion_return
    echo $EPO cp.get_file salt://$UploadName\.7z 'C:\Log_to_xx\'$CurDate'\'$UploadName'.7z'
    Res=$(salt $EPO cp.get_file salt://$UploadName\.7z 'C:\Log_to_xx\'$CurDate'\'$UploadName'.7z')
    check_minion_return
    rm -f /srv/salt/$UploadName\.7z
    echo ====================================================================================
    }&
done
wait

Last updated