انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: سینک کردن تایم با ntp سرور  (دفعات بازدید: 731 بار)

0 کاربر و 3 مهمان درحال مشاهده موضوع.

آفلاین soooot

  • Full Member
  • *
  • ارسال: 176
سینک کردن تایم با ntp سرور
« : 12 آذر 1401، 11:07 ق‌ظ »
سلام
یه سرور vps اوبنتو نسخه 22.04 دارم.
هر بار که روشنش میکنم، در ابتدای کار میخوام یک خط کد بزنم که زمان سرور بروز بشه و سرور ntp رو هم توی همون یک خط بهش بدم، این خط کد باید قابلیت اطمینان بالایی داشته باشه، یعنی باید مطمئن باشم که بعد از زدن اینتر زمان طبق اون سرور ntp بروز شده (سرور ntp به عنوان مثال: ir.pool.ntp.org)
چرا میخوام دستی تایم رو سینک کنم؟ چون تایم سرور بعد از چند دقیقه دوباره عقب یا جلو میفته (در حد چند میلی ثانیه) و من باید "دقیقا قبل از ران کردن برنامه اصلیم" تایم رو بصورت دستی سینک کنم تا کمترین اختلاف تایم رو داشته باشم.
این کد (sudo ntpdate -s ir.pool.ntp.org) رو با جستجو توی اینترنت پیدا کردم، ولی نمیدونم چقدر درست کار میکنه، بعد از اینکه این کد رو میزنم هیچ پیغامی نمیده که از کارکرد درستش مطمئن باشم.
سینک کردن برای اینه که بعدش یه برنامه پایتونی باید اجرا بشه که زمان توش مهمه، اگر کدی باشه که در ابتدای اون برنامه پایتونی زمان رو سینک کنه بهتره، چند تا کتابخونه و کد برای این کار در پایتون توی اینترنت پیدا کردم ولی هیچ کدوم درست کار نمیکردن.
چیکار کنم؟

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19722
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : سینک کردن تایم با ntp سرور
« پاسخ #1 : 12 آذر 1401، 12:00 ب‌ظ »
توی پایتون می‌تونی ساعت دقیق رو این‌جوری داشته باشی:
client = ntplib.NTPClient()
response = client.request('pool.ntp.org')
print(time.ctime(response.tx_time))
اگه کدت فقط قراره روی اوبونتو استفاده بشه هم می تونی به صورت کثیف یه os.system بزنی برای همگام‌سازی زمان
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین soooot

  • Full Member
  • *
  • ارسال: 176
پاسخ : سینک کردن تایم با ntp سرور
« پاسخ #2 : 12 آذر 1401، 07:11 ب‌ظ »
ممنون از وقتی که گذاشتید
این کد
client = ntplib.NTPClient()
response = client.request('pool.ntp.org')
print(time.ctime(response.tx_time))
کاری که من میخوام رو نمیکنه، چون فقط زمان رو از سرور ntp میگیره و اعلام میکنه و زمان سرور خودم رو با سرور ntp سینک نمیکنه، در ادامه برنامه پایتونی به دفعات از لایبراری های time و datetime استفاده میشه که زمان رو از سرور میگیرن و کاری به اون سه خط کد ندارن.
در مورد کثیف کاری با os.system بیشتر توضیح میدید؟ (چیکار کنم و چرا کثیفه؟)

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19722
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : سینک کردن تایم با ntp سرور
« پاسخ #3 : 12 آذر 1401، 10:04 ب‌ظ »
می‌تونی یه خط کد bash وو با این اجرا کنی
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن