Сегодня, ковыряясь со скриптом для бэкапа служебных данных от Transmission, обнаружил мелкий, но неприятный «гвоздь» (прошивка у C-200 — от декабря 2010).
Касается это вставленной в cron.hourly строки:
К сожалению, «ТАМ РЫБЫ НЕТ!». То есть, в папке /bin нет файла ntpclient. Он живет по пути /opt/syb/app/bin/. Его можно вызывать и без явного указания пути (так как путь /opt/syb/app/bin/ прописан в переменной PATH).
Файлы в папке /etc/cron менять бесполезно — при перезагрузке файлы восстанавливаются с прежним «косяком». Пришлось поправить это недоразумение скриптом из комплекта LTU /share/Apps/LTU/user.scripts/on_start_nmt.sh
echo "#Update the NTP clock" > /etc/cron/cron.hourly
echo "ntp_server=\`pflash get time_server\`" >> /etc/cron/cron.hourly
echo "echo \"Updated from \"\$ntp_server >> /var/ntp.log" >> /etc/cron/cron.hourly
echo "date >> /var/ntp.log" >> /etc/cron/cron.hourly
echo "ntpclient -h "\$ntp_server" -s -i 1 >> /var/ntp.log" >> /etc/cron/cron.hourly
echo "date >> /var/ntp.log" >> /etc/cron/cron.hourly
Будете копировать себе — обратите внимание на то, что при копировании все «кавычечки/апострофы» правильной формы и направленности, так как клипборд во Windows обожает приукрашивать. И не забываем про Linux-формат перевода строки (LF только, а не CR+LF).
Вот теперь, после исправления, ntpclient красиво рапортует в /var/ntp.log:
Tue Feb 15 02:37:32 GMT-10 2011
40586 59853.274 386834.0 31.0 260941.5 11230.5 0
Tue Feb 15 02:37:33 GMT-10 2011
Я как-то привык, что домашнее компьютерное оборудование имеет точное время. Странно было видеть, что из-за такой невнимательности программистов, к незначительному по сути скрипту, плеер синхронизируется только при включении — а именно по скрипту в /etc/init.d/S60ntp.
А если «война», а точнее при включении плеера просто нет контакта с Интернет? И знаете что мы получим? А взгляните-ка в этот файл — что вы там видите в секции start ?
{
echo "Setting default date"
<strong>date -s 062820302010</strong>
echo "Starting NTP update"
/etc/ntp_update.sh &
}
Просто «картина Репина» Или «Пусть всегда будет лето!». Или «Им бы понедельники взять, да отменить!». Кто сразу не понял формат даты, который приведен в строке скрипта — декодирую:
Mon Jun 28 20:30:00 GMT-10 2010
Кому приятно жить в прошлом году?
Хотелось бы надеяться, что за синхронизацию времени могут отвечать и другие приложения — например setups.cgi. По крайней мере именно в нем содержится корректный вызов. Но происходит он, видимо, только при баловстве пользователя с настройками сети.
Предвижу возражения, что для правки местоположения файла ntpclient, можно было использовать более простой вариант с символической ссылкой (симлинком).
Да, это просто! В том же sh-скрипте /share/Apps/LTU/user.scripts/on_start_nmt.sh, вместо всех «echo», ставим всего одну строку:
ln -s /opt/syb/app/bin/ntpclient /bin/ntpclient
И все — так тоже будет работать!