В связи с ожидающим нас в скором времени событии: дне, точнее ночи, «не перехода на зимнее время», хочется рассказать про обновление базы временных зон на оборудовании компании Juniper Networks, Inc. исполняющем операционную систему Junos.
Сама процедура великолепно описана в документации представленной на сайте компании, в документе: "Setting a Custom Time Zone on Routers Running JUNOS Software". Я лишь расскажу о ней на родном языке и уточню отдельные детали.
Разработчиками операционной системы было дальновидно подмечено, что обновление базы временных зон может происходить чаще, чем обновление самой операционной системы. И они предоставили возможность использовать базу, собственноручно изменённую администраторами эксплуатирующими их оборудование.
Как это сделать?
Сама процедура великолепно описана в документации представленной на сайте компании, в документе: "Setting a Custom Time Zone on Routers Running JUNOS Software". Я лишь расскажу о ней на родном языке и уточню отдельные детали.
Разработчиками операционной системы было дальновидно подмечено, что обновление базы временных зон может происходить чаще, чем обновление самой операционной системы. И они предоставили возможность использовать базу, собственноручно изменённую администраторами эксплуатирующими их оборудование.
Как это сделать?
- Первое, нам необходимо получить и загрузить на устройство самую новую базу временных зон. Разработчики Junos применяют совершенно стандартную "Time Zone Database", используемую и во многих других операционных системах. Актуальная её версия доступна на сайте IANA.
Смею предположить, что Вы, как администратор имеете доступ к оборудованию по протоколу SSH. И, соответственно, можете применить SCP для переноса полученной у IANA базы на устройство.
Выполним со станции администратора:
> scp tzdata2011m.tar.gz admin-name@junos-host.domain.tld:
При этом мы положим нужный нам архив в домашний каталог пользователя «admin-name», находящийся на устройстве с DNS именем «junos-host.domain.tld». Это лишь один из возможных способов. Другой, я опишу позже.
- Второе, нам необходимо войти на обновляемое устройство с Junos, применяя протокол SSH. И получить на нём shell, используя команду «start shell»
— JUNOS 10.2R3.10 built 2010-10-16 20:36:59 UTC
admin-name@junos-host> start shell
%
Вы окажетесь в домашнем каталоге пользователя, под которым зарегистрировались. Если вы использовали то же имя пользователя и при копировании файла архива базы данных временных зон, то вы сможете увидеть этот файл выполнив команду «ls -lh». Текущее место расположение внутри файловой системы вы сможете узнать используя команду «pwd».
- Вернёмся к первому пункту и я расскажу ещё об одном способе получить файл с архивом временных зон на устройстве. Этот способ может подойти, если с вашего устройства есть доступ к сети Internet. Вы можете воспользоваться командой «fetch» и скачать файл непосредственно с сайта IANA, находясь в режиме shell на устройстве.
% fetch www.iana.org/time-zones/repository/releases/tzdata2011m.tar.gz
- Третье, распакуем содержимое файла архива базы данных временных зон в рекомендуемый в документации каталог.
% mkdir -p /var/tmp/tz && cd /var/tmp/tz && rm *
% tar xzvf /var/home/admin-name/tzdata*.gz
Обратите внимание на то, что мы сделали текущим каталог "/var/tmp/tz". И в нём распаковали содержимое файла архива, расположенного в домашнем каталоге пользователя, под именем которого вы зарегистрировались на устройстве. Если вы выполняли команду «pwd», описанную в пункте два, то заметили, что путь до домашнего каталога, показанный в тот момент и путь, используемый в команде «tar» — отличаются. Вы можете воспользоваться любым из вариантов. В Junos просто создаются символические линки для соответствующих каталогов.
Если необходимо, то в данный момент, вы можете модифицировать файлы базы, представляющие из себя обычные текстовые файлы, используя, например, текстовый редактор «vi» имеющийся в системе.
%vi europe
- Четвёртое. Для исполнения следующих пунктов Вам необходимо получить привилегии пользователя «root» на устройстве. Сделать это можно используя программу «su».
% su
Password:
root@junos-host%
Возникает законный вопрос: «Где взять пароль для пользователя root»? Ну, конечно, если вы его не знаете. Пароль хранится в конфигурации устройства, секция system.
system { root-authentication { encrypted-password "$1$z.GrqhbO$aveIsL2fd4sUbADBrE8Y9/"; ## SECRET-DATA } }
При необходимости Вы можете его поменять:
admin-name@junos-host> edit
Entering configuration mode
[edit]
admin-name@junos-host# set system root-authentication plain-text-password
New password:
Retype new password:
[edit]
admin-name@junos-host# commit
commit complete
- Пятое. Для компиляции пользовательской базы данных часовых поясов воспользуемся скриптом «compile-tz». В нём, на самом деле, происходит лишь вызов приложения «zic» с предустановленными параметрами.
% /usr/libexec/ui/compile-tz europe
В качестве параметров скрипта мы передаём имя исходного файла или нескольких файлов, или любые параметры допустимые для команды «zic».
Полученные скомпилированные файлы базы данных часовых поясов будут помещены в каталог: "/var/db/zoneinfo/".
- Шестое. Как применить полученную базу? Просто нужно указать на использование импортированной базы часовых поясов (use-imported-time-zones) и правильно выставить часовой пояс (time-zone).
[edit]
admin-name@junos-host# set system use-imported-time-zones
[edit]
admin-name@junos-host# set system time-zone Europe/Moscow
[edit]
admin-name@junos-host# commit
commit complete
- Седьмое. Проверить полученный результат можно командой:
admin-name@junos-host> show system uptime