Определите, если дата превышает 90 дней в Bash

Предполагая что у вас могут быть разные интерфейсы с разными именами , но , что вам нужен первый не-localhost и не-ipv6, вы можете попробовать:

ip=`ip addr show |grep "inet " |grep -v 127.0.0. |head -1|cut -d" " -f6|cut -d/ -f1`
2
05.07.2018, 22:09
2 ответа

Вы можете использовать GNU dateдля преобразования строки даты -времени в количество секунд (с "эпохи", 1 января 1970 года ). Оттуда это простое арифметическое сравнение

datetime='2016-08-31T15:38:18Z'
timeago='90 days ago'

dtSec=$(date --date "$datetime" +'%s')    # For "now", use $(date +'%s')
taSec=$(date --date "$timeago" +'%s')

echo "INFO: dtSec=$dtSec, taSec=$taSec" >&2

[ $dtSec -lt $taSec ] && echo too old
12
27.01.2020, 21:53

Приведенный ниже сценарий будет читать формат, который вы представили выше, но если у вас уже есть значения в существующих переменных, вы можете объединить код:

#!/bin/bash
cutoff=$(date -d '90 days ago' +%s)
while read -r key colon date
do
  age=$(date -d "$date" +%s)
  if (($age < $cutoff))
  then
    printf "Warning! key %s is older than 90 days\n" "$key" >&2
  fi
done < input
2
27.01.2020, 21:53

Теги

Похожие вопросы