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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: soooot در 12 آذر 1401، 11:07 ق‌ظ

عنوان: سینک کردن تایم با ntp سرور
ارسال شده توسط: soooot در 12 آذر 1401، 11:07 ق‌ظ
سلام
یه سرور vps اوبنتو نسخه 22.04 دارم.
هر بار که روشنش میکنم، در ابتدای کار میخوام یک خط کد بزنم که زمان سرور بروز بشه و سرور ntp رو هم توی همون یک خط بهش بدم، این خط کد باید قابلیت اطمینان بالایی داشته باشه، یعنی باید مطمئن باشم که بعد از زدن اینتر زمان طبق اون سرور ntp بروز شده (سرور ntp به عنوان مثال: ir.pool.ntp.org)
چرا میخوام دستی تایم رو سینک کنم؟ چون تایم سرور بعد از چند دقیقه دوباره عقب یا جلو میفته (در حد چند میلی ثانیه) و من باید "دقیقا قبل از ران کردن برنامه اصلیم" تایم رو بصورت دستی سینک کنم تا کمترین اختلاف تایم رو داشته باشم.
این کد (sudo ntpdate -s ir.pool.ntp.org) رو با جستجو توی اینترنت پیدا کردم، ولی نمیدونم چقدر درست کار میکنه، بعد از اینکه این کد رو میزنم هیچ پیغامی نمیده که از کارکرد درستش مطمئن باشم.
سینک کردن برای اینه که بعدش یه برنامه پایتونی باید اجرا بشه که زمان توش مهمه، اگر کدی باشه که در ابتدای اون برنامه پایتونی زمان رو سینک کنه بهتره، چند تا کتابخونه و کد برای این کار در پایتون توی اینترنت پیدا کردم ولی هیچ کدوم درست کار نمیکردن.
چیکار کنم؟
عنوان: پاسخ : سینک کردن تایم با ntp سرور
ارسال شده توسط: دانیال بهزادی در 12 آذر 1401، 12:00 ب‌ظ
توی پایتون می‌تونی ساعت دقیق رو این‌جوری داشته باشی:
client = ntplib.NTPClient()
response = client.request('pool.ntp.org')
print(time.ctime(response.tx_time))
اگه کدت فقط قراره روی اوبونتو استفاده بشه هم می تونی به صورت کثیف یه os.system بزنی برای همگام‌سازی زمان
عنوان: پاسخ : سینک کردن تایم با ntp سرور
ارسال شده توسط: soooot در 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 بیشتر توضیح میدید؟ (چیکار کنم و چرا کثیفه؟)
عنوان: پاسخ : سینک کردن تایم با ntp سرور
ارسال شده توسط: دانیال بهزادی در 12 آذر 1401، 10:04 ب‌ظ
می‌تونی یه خط کد bash وو با این اجرا کنی