Установите переменную для вывода команды в скрипте bsh - PullRequest
0 голосов
/ 15 сентября 2018

Запуск системы с временем UTC Я хотел бы иметь возможность записывать файлы журналов с местным временем, поэтому их чтение позже и выявление влияния внешних факторов на проблемы требуют меньше мозгов.

Команда для получения локальной даты (например, Сидней, Австралия) при работе в UTC -

TZ=Australia/Sydney date

Это вернет

Сб 15 сен 17:19:28 AEST 2018

Пример моего сценария ниже. На данный момент, пожалуйста, игнорируйте тот факт, что это не лучший сценарий для работы, которую он пытается выполнить. Моя проблема - время, записанное в файле журнала. Каждый цикл выполняет этот скрипт - записывает одну и ту же дату / время в файл журнала - местное время, когда был запущен скрипт.

#!/bin/sh
localdatetime=$(TZ=Australia/Sydney date)

while
  do
    nc -zw5 192.168.0.199     # IP of router
    if [[ $? -eq 0 ]]; then
      status="up"
    else
      status="down"
    fi
  echo "$localdatetime The router is now $status" >> /home/pi/userX/routerStatus.log
  sleep 10
done

Я хочу, чтобы текущее местное время сохранялось в файле журнала в каждом цикле, чтобы я знал по чтению файла журнала, когда маршрутизатор был включен или выключен. Есть ли способ сделать это с помощью переменной?

Заранее благодарим за любые полезные советы.

1 Ответ

0 голосов
/ 24 марта 2019

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

Например:

#!/bin/sh

while
  do
    nc -zw5 192.168.0.199     # IP of router
    if [[ $? -eq 0 ]]; then
      status="up"
    else
      status="down"
    fi
  localdatetime=$(TZ=Australia/Sydney date)
  echo "$localdatetime The router is now $status" >> /home/pi/userX/routerStatus.log
  sleep 10
done
...