Bash - Расчет с заданной датой - PullRequest
0 голосов
/ 22 октября 2019

Я хочу сделать чек в Ицинге, с указанной датой. У данной даты есть своя формация, поэтому я могу изменить ее только в Batch, что я и пробовал.

Таким образом, Bash должен дать мне критическое замечание, когда fDate до 7 дней ниже даты фактической активации, и Bash должен дать мне предупреждение, когда fDate составляет 21 день до даты фактической активации.

Вот мой сценарий:


#Actuall date in format from the Fortigate
LANG=en_us_8859_1 
aDate=`date +"%a %b %d %Y"`
aDateOW=`date +"%b/%d/%Y"`
#aDateOM=`date +"%d %Y"`
echo $aDate Actuall date with weekday/month
echo $aDateOW Actuall date without weekday with slash
#echo $aDateOM Actuall date without weekday/month
echo -------------------------------------------------------


#Date from Fortigate (webfilter-expliration) 
#testdate manuell declared
fDate="Sun Oct 27 2019"
fDateOW="${fDate:4:11}"
fDateOW="${fDateOW//[ ]//}"
echo $fDateOW Date from Fortigate with slash
date -d 'fDateOW 7 days'
echo $date test
#fDateOM="${fDate:8:8}"
echo $fDate Date from Fortigate with weekday/month
echo $fDateOW Date from Fortigate without weekday
#echo $fDateOM Date from Fortigate without weekday/month
echo -------------------------------------------------------


#Exit Codes Icinga
#ok=0
#warn=1
#crit=2
#unknown=3

if [[ "$aDateOW" < "$fDateOW" ]] 
then 
  echo ok
#  exit 0
elif
$fDateOW -v-7d
  [[ "$aDateOW" > "$fDateOW" ]]
then
  echo ok
elif 
  [[ "$aDateOW" == "$fDateOW" ]]
then
  echo warning
#  exit 1
elif 
  [[ "$aDateOW" > "$fDateOW" ]]
then  
  echo critical
#  exit 2
fi
echo $fDateOW

1 Ответ

0 голосов
/ 22 октября 2019

Вы должны отформатировать дату в метку времени Unix (или эпоху). Это количество секунд с 1 января 1970 года. Ниже приведен небольшой пример.

#! /bin/bash

tomorrow=$(date -d "+1 days")
yesterday=$(date -d "-1 days")

t0=$(date -d "${tomorrow}" "+%s")
t1=$(date -d "${yesterday}" "+%s")

echo $t0, $t1

if [ $t0 -lt $t1 ]; then
        echo "Tomorrow is before yesterday"
else
        echo "Yesterday is before tomorrow"
fi
exit 0

Обратите внимание, что эпоха переполнится через одну секунду после 03:14:07 UTC 2038-01-19. Прочитайте это , если вам интересно: -)

...