#!/bin/bash
SSHUSER=gkadmin
SSHPASS=.pass
SSHHOST=$1
LOGPASS=/media/sdcard/solajithome/Log
MIDPASS=/var/local/nerlog
BKUPASS=`date '+./%Y/%m/%d'`
LOGSFIX=`date '+%Y%m%d'`

if [ $# -ne 1 ]; then
  "引数が不正です" >> ./logs/log.$LOGSFIX
  exit 1
fi

now=`date '+%Y/%m/%d %H:%M:%S'`
echo "$now || Log Loader Start" >> ./logs/log.$LOGSFIX

echo "ロガーアプリのログ取得開始" >> ./logs/log.$LOGSFIX
otime=`cat .time`
for i in 1 2 3 4 5 6 7 8 9 10 11 12; do
  echo "ターゲットファイルのタイムスタンプ取得: InfoLogger.log.$i" >> ./logs/log.$LOGSFIX
  ntime=`sshpass -f $SSHPASS ssh $SSHUSER@$SSHHOST "cd $LOGPASS && /bin/date '+%Y%m%d%H%M%S' -r InfoLogger.log.$i" 2>> ./logs/log.$LOGSFIX`
  if [[ $ntime =~ ^[0-9]{14}$ ]]; then
    echo "new timestamp: $ntime" >> ./logs/log.$LOGSFIX
    echo "old timestamp: $otime" >> ./logs/log.$LOGSFIX
  else
    echo "ssh failed: $ntime" >> ./logs/log.$LOGSFIX
    exit 1
  fi
  if [ $ntime -le $otime ]; then
    break
  else
    echo "未取得のログファイルが見つかりました" >> ./logs/log.$LOGSFIX
  fi
  echo "ターゲットファイルを圧縮します" >> ./logs/log.$LOGSFIX
  sshpass -f $SSHPASS ssh $SSHUSER@$SSHHOST "cd $LOGPASS && /bin/tar czvf /tmp/InfoLogger.log.$i.tgz InfoLogger.log.$i" >> ./logs/log.$LOGSFIX 2>&1
  if [ $? -ne 0 ]; then
    echo "ssh failed: $?" >> ./logs/log.$LOGSFIX
    exit 1
  fi
  if [ ! -e $BKUPASS ]; then
    mkdir -p $BKUPASS
  fi
  echo "ターゲットファイルを取得します: $SSHHOST:/tmp/InfoLogger.log.$i.tgz -> localhost:$BKUPASS/InfoLogger.log.$ntime.tgz" >> ./logs/log.$LOGSFIX 2>&1
  sshpass -f $SSHPASS scp $SSHUSER@$SSHHOST:/tmp/InfoLogger.log.$i.tgz $BKUPASS/InfoLogger.log.$ntime.tgz >> ./logs/log.$LOGSFIX 2>&1
  if [ $? -ne 0 ]; then
    echo "scp failed: $?" >> ./logs/log.$LOGSFIX
    exit 1
  fi
  if [ $i -eq 1 ]; then
    echo -n $ntime > .time
  fi
done
echo "ロガーアプリのログ取得完了" >> ./logs/log.$LOGSFIX

echo "ロガー通信アプリのログ取得開始" >> ./logs/log.$LOGSFIX
otime=`cat .time_com`
for i in 1 2 3 4 5 6 7 8 9 10 11 12; do
  echo "ターゲットファイルのタイムスタンプ取得: LoggerCom.log.$i" >> ./logs/log.$LOGSFIX
  ntime=`sshpass -f $SSHPASS ssh $SSHUSER@$SSHHOST "cd $LOGPASS && /bin/date '+%Y%m%d%H%M%S' -r LoggerCom.log.$i" 2>> ./logs/log.$LOGSFIX`
  if [[ $ntime =~ ^[0-9]{14}$ ]]; then
    echo "new timestamp: $ntime" >> ./logs/log.$LOGSFIX
    echo "old timestamp: $otime" >> ./logs/log.$LOGSFIX
  else
    echo "ssh failed: $ntime" >> ./logs/log.$LOGSFIX
    exit 1
  fi
  if [ $ntime -le $otime ]; then
    break
  else
    echo "未取得のログファイルが見つかりました" >> ./logs/log.$LOGSFIX
  fi
  echo "ターゲットファイルを圧縮します" >> ./logs/log.$LOGSFIX
  sshpass -f $SSHPASS ssh $SSHUSER@$SSHHOST "cd $LOGPASS && /bin/tar czvf /tmp/LoggerCom.log.$i.tgz LoggerCom.log.$i" >> ./logs/log.$LOGSFIX 2>&1
  if [ $? -ne 0 ]; then
    echo "ssh failed: $?" >> ./logs/log.$LOGSFIX
    exit 1
  fi
  if [ ! -e $BKUPASS ]; then
    mkdir -p $BKUPASS
  fi
  echo "ターゲットファイルを取得します: $SSHHOST:/tmp/LoggerCom.log.$i.tgz -> localhost:$BKUPASS/LoggerCom.log.$ntime.tgz" >> ./logs/log.$LOGSFIX 2>&1
  sshpass -f $SSHPASS scp $SSHUSER@$SSHHOST:/tmp/LoggerCom.log.$i.tgz $BKUPASS/LoggerCom.log.$ntime.tgz >> ./logs/log.$LOGSFIX 2>&1
  if [ $? -ne 0 ]; then
    echo "scp failed: $?" >> ./logs/log.$LOGSFIX
    exit 1
  fi
  if [ $i -eq 1 ]; then
    echo -n $ntime > .time_com
  fi
done
echo "ロガー通信アプリのログ取得完了" >> ./logs/log.$LOGSFIX

echo "RS485のログ取得開始" >> ./logs/log.$LOGSFIX
otime=`cat .time_mid`
for i in 1 2 3 4 5 6 7 8 9 10; do
  echo "ターゲットファイルのタイムスタンプ取得: gkmid.$i.log" >> ./logs/log.$LOGSFIX
  ntime=`sshpass -f $SSHPASS ssh $SSHUSER@$SSHHOST "cd $MIDPASS && /bin/date '+%Y%m%d%H%M%S' -r gkmid.$i.log" 2>> ./logs/log.$LOGSFIX`
  if [[ $ntime =~ ^[0-9]{14}$ ]]; then
    echo "new timestamp: $ntime" >> ./logs/log.$LOGSFIX
    echo "old timestamp: $otime" >> ./logs/log.$LOGSFIX
  else
    echo "ssh failed: $ntime" >> ./logs/log.$LOGSFIX
    exit 1
  fi
  if [ $ntime -le $otime ]; then
    break
  else
    echo "未取得のログファイルが見つかりました" >> ./logs/log.$LOGSFIX
  fi
  echo "ターゲットファイルを圧縮します" >> ./logs/log.$LOGSFIX
  sshpass -f $SSHPASS ssh $SSHUSER@$SSHHOST "cd $MIDPASS && /bin/tar czvf /tmp/gkmid.$i.log.tgz gkmid.$i.log" >> ./logs/log.$LOGSFIX 2>&1
  if [ $? -ne 0 ]; then
    echo "ssh failed: $?" >> ./logs/log.$LOGSFIX
    exit 1
  fi
  if [ ! -e $BKUPASS ]; then
    mkdir -p $BKUPASS
  fi
  echo "ターゲットファイルを取得します: $SSHHOST:/tmp/gkmid.$i.log.tgz -> localhost:$BKUPASS/gkmid.$ntime.log.tgz" >> ./logs/log.$LOGSFIX 2>&1
  sshpass -f $SSHPASS scp $SSHUSER@$SSHHOST:/tmp/gkmid.$i.log.tgz $BKUPASS/gkmid.$ntime.log.tgz >> ./logs/log.$LOGSFIX 2>&1
  if [ $? -ne 0 ]; then
    echo "scp failed: $?" >> ./logs/log.$LOGSFIX
    exit 1
  fi
  if [ $i -eq 1 ]; then
    echo -n $ntime > .time_mid
  fi
done
echo "RS485のログ取得完了" >> ./logs/log.$LOGSFIX

echo "WatchDogのログ取得開始" >> ./logs/log.$LOGSFIX
otime=`cat .time_wdt`
for i in 1 2 3 4 5 6 7 8 9 10; do
  echo "ターゲットファイルのタイムスタンプ取得: wdt.log.$i" >> ./logs/log.$LOGSFIX
  ntime=`sshpass -f $SSHPASS ssh $SSHUSER@$SSHHOST "cd $MIDPASS && /bin/date '+%Y%m%d%H%M%S' -r wdt.log.$i" 2>> ./logs/log.$LOGSFIX`
  if [[ $ntime =~ ^[0-9]{14}$ ]]; then
    echo "new timestamp: $ntime" >> ./logs/log.$LOGSFIX
    echo "old timestamp: $otime" >> ./logs/log.$LOGSFIX
  else
    echo "ssh failed: $ntime" >> ./logs/log.$LOGSFIX
    exit 1
  fi
  if [ $ntime -le $otime ]; then
    break
  else
    echo "未取得のログファイルが見つかりました" >> ./logs/log.$LOGSFIX
  fi
  echo "ターゲットファイルを圧縮します" >> ./logs/log.$LOGSFIX
  sshpass -f $SSHPASS ssh $SSHUSER@$SSHHOST "cd $MIDPASS && /bin/tar czvf /tmp/wdt.log.$i.tgz wdt.log.$i" >> ./logs/log.$LOGSFIX 2>&1
  if [ $? -ne 0 ]; then
    echo "ssh failed: $?" >> ./logs/log.$LOGSFIX
    exit 1
  fi
  if [ ! -e $BKUPASS ]; then
    mkdir -p $BKUPASS
  fi
  echo "ターゲットファイルを取得します: $SSHHOST:/tmp/wdt.log.$i.tgz -> localhost:$BKUPASS/wdt.$ntime.log.tgz" >> ./logs/log.$LOGSFIX 2>&1
  sshpass -f $SSHPASS scp $SSHUSER@$SSHHOST:/tmp/wdt.log.$i.tgz $BKUPASS/wdt.$ntime.log.tgz >> ./logs/log.$LOGSFIX 2>&1
  if [ $? -ne 0 ]; then
    echo "scp failed: $?" >> ./logs/log.$LOGSFIX
    exit 1
  fi
  if [ $i -eq 1 ]; then
    echo -n $ntime > .time_wdt
  fi
done
echo "WatchDogのログ取得完了" >> ./logs/log.$LOGSFIX

now=`date '+%Y/%m/%d %H:%M:%S'`
echo "$now || Log Loader Complate" >> ./logs/log.$LOGSFIX

find ./logs/ -mtime +7 | xargs --no-run-if-empty rm

exit 0
