עדכון שעון קיץ/חורף ב- Solaris

בהמשך למדריכים על עדכון שעון קיץ/חורף בלינוקס ו- hp-ux, אציג את התהליך לשינוי השעון ב Sun-Solaris:
בקובץ etc/default/init/ מוגדר אזור הזמן ברמת השרת: יש לוודא שרשום: TZ=Israel. כדי לדעת מתי יתחלף השעון יש להריץ את הפקודה: zdump -v Israel | grep 2008 (הסבר על zdump כתבתי במדריך על לינוקס). במידה והערכים ש- zdump מפיק אינם נכונים צריך לעדכן את הקובץ ששייך ל: zoneinfo->Israel.

מעבר לכך, כל משתמש יכול להתאים את אזור הזמן המדויק שלו ע"י הוספת הגדרת ה- ‎TZ לקובץ הפרופיל שלו.

עדכון שעון קיץ/חורף בלינוקס

הערה: היום בלילה עוברים לשעון קיץ ולכן אני מקפיץ את המאמר שכתבתי בנושא.

שעון קיץ וחורף בלינוקס:

כדי שלינוקס יעדכן שעון קיץ/חורף באופן אוטומטי יש לבצע את הפעולות הבאות:

תחילה יש לוודא שהמחשב נמצא באזור הזמן הנכון. ב- gnome יש ללחוץ על השעון ולבחור ב- "כוון תאריך ושעה". נקבל את המסך הבא:

tz01.png

יש לוודא שאנו מכוונים ל- Asia/Jerusalem. במידה ולא נלחץ על Timezone, נקבל את מפת כדור הארץ ונבחר בירושלים. כמובן שבמחשב המריץ לינוקס לא חייבת להיות סביבה גרפית כלשהי, ולכן יש לדעת כיצד לבדוק ולכוון את אזור הזמן ללא שימוש באפליקציה גרפית כלשהי. אחלק את ההסבר לשניים: שינוי אזור זמן למשתמש מסוים ושינוי אזור זמן לשרת עצמו.
שינוי אזור זמן למשתמש מסוים:
מקישים את הפקודה date ומקבלים את התשובה הבאה: Sat Sep 1 18:28:59 IDT 2007.
IDT מציין שאנו באזור זמן ישראל. במידה ואנו לא מוגדרים באזור הזמן הנכון, יש להקיש את הפקודה tzselect

ilan@etch:~$ tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
1) Africa
2) Americas
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none – I want to specify the time zone using the Posix TZ format.
#? 5
Please select a country.
1) Afghanistan 18) Israel 35) Palestine
2) Armenia 19) Japan 36) Philippines
3) Azerbaijan 20) Jordan 37) Qatar
4) Bahrain 21) Kazakhstan 38) Russia
5) Bangladesh 22) Korea (North) 39) Saudi Arabia
6) Bhutan 23) Korea (South) 40) Singapore
7) Brunei 24) Kuwait 41) Sri Lanka
8) Cambodia 25) Kyrgyzstan 42) Syria
9) China 26) Laos 43) Taiwan
10) Cyprus 27) Lebanon 44) Tajikistan
11) East Timor 28) Macau 45) Thailand
12) Georgia 29) Malaysia 46) Turkmenistan
13) Hong Kong 30) Mongolia 47) United Arab Emirates
14) India 31) Myanmar (Burma) 48) Uzbekistan
15) Indonesia 32) Nepal 49) Vietnam
16) Iran 33) Oman 50) Yemen
17) Iraq 34) Pakistan
#? 18

The following information has been given:

Israel

Therefore TZ='Asia/Jerusalem' will be used.
Local time is now: Fri Sep 14 18:19:01 IDT 2007.
Universal Time is now: Fri Sep 14 15:19:01 UTC 2007.
Is the above information OK?
1) Yes
2) No
#? 1

You can make this change permanent for yourself by appending the line
TZ='Asia/Jerusalem'; export TZ
to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Jerusalem
ilan@etch:~$

 

הסבר:
בהתחלה בוחרים באופציה 5 (אסיה), אח"כ באופציה 18 (ישראל) ומאשרים. מקבלים תשובה שעברנו לאזור זמן: TZ='Asia/Jerusalem שזה אזור הזמן הרצוי לנו. אך השינוי שעשינו כרגע הוא שינוי זמני. כדי שהשינוי יהיה קבוע יש לערוך את הקובץ profile./~ ולהוסיף בסופו את הפקודה הבאה:

export TZ TZ='Asia/Jerusalem';

מאחר שלינוקס יכולה לשרת מאות משתמשים, הפרוסים באזורים גאוגרפיים שונים, ניתן לקבוע לכל משתמש את אזור הזמן המתאים לו.
שינוי אזור זמן לשרת:
מריצים את הפקודה: ls -l /etc/localtime. ניתן לראות שהקובץ מצביע על Asia/Jerusalem.

etch:/home/ilan# ls -l /etc/localtime
lrwxrwxrwx 1 root root 34 2007-09-14 18:34 /etc/localtime -> /usr/share/zoneinfo/Asia/Jerusalem


בספריה usr/share/zoneinfo/ מופיעים היבשות והמדינות השונות, ובמידה ורוצים לשנות את אזור הזמן לשרת יש לשנות את ערך המצביע של הקובץ etc/localtime/
דוגמא:
במידה והקובץ localtime לא מצביע על אזור הזמן הנכון (ירושלים) ניתן לתקן זאת ע"י עדכון הקישור הסימבולי כך:
ln -s /usr/share/zoneinfo/Asia/Jerusalem /etc/localtime

  • לאחר שקבענו את אזור הזמן הנכון כיצד אנו יודעים מתי יתחלף השעון משעון קיץ לשעון חורף ולהיפך?
    מריצים את הפקודה: zdump -v Asia/Jerusalem | grep 2007 ומקבלים את הפלט הבא:
    etch:/home/ilan# zdump -v Asia/Jerusalem | grep 2007
    Asia/Jerusalem Thu Mar 29 23:59:59 2007 UTC = Fri Mar 30 01:59:59 2007 IST isdst=0 gmtoff=7200
    Asia/Jerusalem Fri Mar 30 00:00:00 2007 UTC = Fri Mar 30 03:00:00 2007 IDT isdst=1 gmtoff=10800
    Asia/Jerusalem Sat Sep 15 22:59:59 2007 UTC = Sun Sep 16 01:59:59 2007 IDT isdst=1 gmtoff=10800
    Asia/Jerusalem Sat Sep 15 23:00:00 2007 UTC = Sun Sep 16 01:00:00 2007 IST isdst=0 gmtoff=7200
    etch:/home/ilan#


    הסבר:
    בשורה הראשונה רואים שעוברים משעון חורף (IST :Israel Standard Time) לשעון קיץ (IDT: Israel Daylight Time) ב: Fri Mar 30 01:59:59 2007. עד זמן זה אנו היינו ב- UTC-2 (יש לשים לב שהזחת הזמן נמדדת בשניות: 7200 מציין שעתיים), ולאחריו אנו עוברים (שורה שנייה) ל- UTC-3. בזמן הזזת השעון הזמן ב- UTC הוא: UTC = Fri Mar 30 03:00:00 2007 כשהזמן המקומי החדש הוא: Fri Mar 30 00:00:00 2007 . אופן דומה שורות 3- ו- 4 מתייחסות למעבר בין שעון קיץ לשעון חורף.

    [ratings]

  • עדכון שעון קיץ/חורף ב- hp-ux

    הערה: היום בלילה מתחיל שעון קיץ אז אני מקפיץ מאמר שכתבתי בנושא.

    לא מדובר בלינוקס ובטוח שלא בקוד פתוח, אך החלטתי (בהמשך למאמר של ליאור קפלן) לכתוב כיצד אני משנה שעון קיץ/חורף בשרתי hp-ux:

    בשרתי hp-ux קיים קובץ בשם tztab בתיקיה usr/lib/. בקובץ זה מוגדרים אזורי הזמן השונים. בדוגמה הבאה אציג מספר שורות מהקובץ שמתייחסות לישראל:

    #
    # Israel Time Zone
    #
    IST-2IDT
    0 2 30 3 1983-2009 0-6 IDT-3
    0 2 16 9 1983-2009 0-6 IST-2

    מעבר לקובץ הזה מוגדר בקובץ \etc\TIMEZONE את אזור הזמן בו נמצא השרת (שאמור להתאים למה שרשום ב- tztab: כלומר IST-2IDT

    הסבר:
    השורה הראשונה מציינת שעוברים לשעון קיץ ב- 30.3 בשעה 02:00 (בכל אחת מהשנים 1983-2009)
    השורה השנייה מציינת שעוברים לשעון חורף ב- 16.9 בשעה 02:00 (בכל אחת מהשנים 1983-2009)
    די פשוט, אבל לא כ"כ אוטומטי… אז מה אני עושה? מעדכן בתחילת השנה את הקובץ tztab באחד השרתים (עבור כל השנה), ואח"כ מעתיק אותו לשרתים האחרים:

    rcp /usr/lib/tztab hostname:/usr/lib/.

    החישוב שאני עושה כל שנה הוא (עפ"י החוק):
    שעון קיץ: שישי האחרון לפני ה- 2 באפריל (ב-02:00 בלילה)
    שעון חורף: ראשון אחרון לפני י' בתשרי (ב- 02:00 בלילה)

    בקיצור עבודה ידנית, וכפי שליאור קפלן כתב במאמר: "שעון קיץ והצד המגעיל של תמיכה מסחרית" החברות המסחריות לא מתאמצות לספק לנו פתרונות אוטומטיים: "ביקשתי מ-HP ישראל (בתור לקוח שלהם) שידאגו להוסיף את ישראל לרשימת המדינות שמופיעות כברירת מחדל בקובץ שמגיע עם מערכת ההפעלה. והתשובה שקיבלתי היא שאני מוזמן להכניס את הערכים בעצמי באופן ידני, ושאין שום טלאי כזה עבור המידע הקשור לישראל (בניגוד למידע שקשור לארצות הברית, שם יש עדכונים מסודרים)".
    מסקנה: כפי שאנו, אנשי הקוד הפתוח, תמיד טוענים… תמיכה מסחרית (בתשלום) איננה ערובה לתמיכה טובה, ודווקא בלינוקס, בקוד הפתוח, התמיכה טובה הרבה יותר.

    [ratings]

    סקריפט: בדיקת נכונות של מספר תעודת זהות

    בהמשך לרשימה הקודמת (סקריפט שמחשב ספרת ביקורת של מספר ת"ז) כתבתי סקריפט שבודק את החוקיות של מספר ת"ז.

    הסקריפט מטפל במצבים החריגים הבאים:

    • קבלת מספר המכיל יותר מ- 9 ספרות
    • במקרה ובמספר פחות מ- 9 ספרות יתווספו "אפסים" מובילים עד להשלמה ל- 9 ספרות.
    • מספר ת"ז משובש (מכיל תווים שאינם ספרות)

    הורדה: כאן
    אופן שימוש: python checkID.py 123456789
    הערה: 123456789 הוא הת"ז הנבדק

    סקריפט: חישוב ספרת ביקורת בתעודת זהות

    ניתן לקרוא כאן על אופן חישוב ספרת ביקורת בתעודת זהות. כדי להקל על החישוב כתבתי סקריפט שמבצע את החישוב. הסקריפט מטפל במצבים החריגים הבאים:

    • קבלת מספר שמכיל פחות מ- 8 ספרות. במצב זה יתווספו "אפסים" מובילים עד להשלמה ל- 8 ספרות.
    • קבלת מספר שמכיל יותר מ- 8 ספרות.
    • הכנסת קלט משובש (מכיל תווים שאינם ספרות).

    הורדה: כאן
    שימוש: python calculateID.py 12345678
    הסבר: 12345678 הוא מספר תעודת זהות
    הערה: דווחו על באגים 🙂