استفاده از اینترنت شبانه ایرانسل با یکم گیک بازی!

ماجرا از اینجا شروع شد که تو خونه پدری، یه کامپیوتر خیلی خسته قدیمی وجود داشت که بعد از اینکه لپ‌تاپ خریدن داشت گوشه خونه خاک می‌خورد و کسی ازش استفاده نمی‌کرد. منم که سرم درد می‌کنه برای ور رفتن با این چیزا، تصمیم گرفتم بیارمش خونه تا بعدا فکر کنم ببینم باهاش چیکارا می‌شه کرد.

. عکس واقعی نیست :) صرفا خواستم قدیمی بودن رو برسونم
. عکس واقعی نیست :) صرفا خواستم قدیمی بودن رو برسونم

یه مدتی که گذشت فرصت شد در موردش فکر کنم، دیدم چون قدرت پردازشی خاصی نداره، تقریبا هیچ‌ کار جدی‌‌ای نمیشه باهاش کرد. تنها چیزی که توجهم رو جلب کرد، هارد ۵۱۲ گیگابایتی بود که تا حد خوبی، خالی بود. بعد از اون هم نگاهم افتاد به این:

مودم TD-lte ایرانسل
مودم TD-lte ایرانسل

اگر از TD-Lte استفاده کرده باشید، متوجه شدید که اپراتور محترم ایرانسل به هر نحوی هست می‌خواد یه اینترنت شبانه بکنه تو پاچتون تا نونی که می‌بره سر سفره زن و بچه حلال باشه و قیمت بسته‌هاش منطقی بشه. خب دیگه بقیه ماجرا قابل حدس هست. حالا نیاز هست که یه اسکریپت ساده بنویسیم. نتیجه اسکریپت هم باید این باشه: شب‌ها که ما می‌خوابیم، این سیستم بیدار باشه (بشه!) و تا جایی که می‌تونه دانلود کنه.

در ادامه‌ی این پست قصد دارم نحوه کانفیگ کردن یک سیستم رو برای اینکار توضیح بدم. قبل از شروع این رو بگم که قرار نیست خیلی فنی باشه این پست و صرفا جنبه‌ی گیک‌بازی داره و می‌خوایم باهم یذره تفریح فنی کنیم :) علاوه بر این، راهی که انتخاب شده قطعا بهترین راه نیست و صرفا خواستم در خلال این کارا یذره چیز میز هم یاد بگیریم. (راه ساده استفاده از یک برنامه دانلود منیجر به همراه schedular هست)

خب دیگه، بریم سراغ کار اصلی:

  1. اول از همه باید چیکار کنیم؟! به نظرم باید بریم یه چرخی تو سیستم بزنیم که با خیال راحت بتونیم همه چیز رو پاک کنیم و os جدید رو نصب کنیم. برای من اینطوری بود که کلی عکس قدیمی رو سیستم پیدا کردم! بین خودمون بمونه، خیلی‌هاش رو هم نباید می‌دیدم فکر کنم :) خلاصش اینکه یه بک‌آپ گرفتم از سیستم و تقدیم خانواده کردم که البته خودشون هم یادشون نبود که این فایل‌ها روی سیستم هست.
  2. بعد از این می‌ریم که یکی از distribution های لینوکس رو روش نصب کنیم. اگه نمی‌دونید لینوکس چیه، panic نکنید، چیز خاصی نیست! اگه دولپر هستید و باهاش آشنا نیستید توصیه می‌شه هرچه سریع‌تر برید دنبالش. من برای سیستم خودم از اوبونتو استفاده کردم، نسخه ۱۸.۱۰. اگر هم با نصبش آشنایی ندارید می‌تونید به اینجا مراجعه کنید (برای این نسخه خاصی که گفتم نیست، ولی کلیت ماجرا تفاوت چندانی نداره)
https://tml-manager.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B5%D8%A8-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%B9%D8%A7%D9%85%D9%84-ubuntu-14-04/

۳. بعد از این مرحله باید یکاری کنیم که این سیستم سر ساعتی که ما می‌خوایم بیدار بشه! برای اینکار باید وارد تنظیمات ‌BIOS بشیم. اگه os عوض کرده باشید قبلا، برای تغییر اولویت بوت شدن سیستم، حتما یه سری بهش زدید. در واقع همون جایی هست که برای وارد شدن بهش، هر کلیدی دم دست هست رو کی‌بورد رو می‌زنیم تا واردش بشیم :)
هرکلید که برای شوخی بود، ولی رو سیستم‌‌های مختلف، با فشردن کلید‌های متفاوتی می‌تونید واردش بشید:

https://www.tomshardware.com/ سایت
https://www.tomshardware.com/ سایت

بعد از اینکه وارد شدید، دنبال تنظیمات power بگردید. معمولا اسمش هست power management setup. بعدش هم یجایی وجود داره به اسم resume time، اینجا همون‌جایی هست که میشه تنظیم کرد سیستم خسته ما چه ساعتی از خواب بیدار بشه.

۴. حالا باید به این فکر کرد که خیلی هم بیدار نباشه! در واقع باید تو انتهای بازه، خاموش بشه که از حجم عادی مصرف نکنه. ساعتی که نت شبانه ایرانسل کار می‌کنه بین بازه‌ی ۲ تا ۷ صبح هست، پس در واقع، بعد از روشن شدن، حدود ۵ ساعت باید سیستم کار کنه و بعدش بره برای لالا. برای این بخش هم راه حل‌های مختلفی وجود داره، که من از crontab استفاده کردم و کامند زیر رو تو کانفیگش قرار دادم.

@reboot /bin/sleep 5h; /sbin/poweroff

خط بالا داره می‌گه بعد هر بار روشن شدن، با یک تاخیر ۵ ساعته سیستم رو خاموش کن.

۵. در مرحله آخر هم باید فایل‌ها رو تو زمانی که سیستم روشنه منتقل کنیم بهش. از بخت خوب، یکی دو تا از سرورهایی که دستم هست، ترافیکشون جز ترافیک داخلی محسوب می‌شه و همونطور که می‌دونید از نظر هزینه‌ای نصف قیمت هست، در نتیجه در طول روز، فایل‌هایی که می‌خوام بهشون رو سیستم خونه دسترسی داشته باشم رو روی سرور دانلود می‌کنم و شبانه باید سرور با سیستم خسته‌ی خونه sync بشه.

برای این‌ کار از زبان اسکریپتی پایتون استفاده کردم، کد نهایی رو می‌تونید تو این repo ببینید:

https://github.com/pourya2374/file_syncer

کد تا حد خوبی خواناست و ساده، اینجا فقط سعی می‌کنم ایده‌های کلی که استفاده شده رو توضیح بدم:

  • فایل configs.py: تو این فایل تنظیمات اصلی پروژه مثل آدرس فولدر دانلودها روی سرور، آدرس فولدر دانلود روی سیستم‌ خسته، ساعت‌هایی که اسکریپت می‌تونه کار کنه و ... قرار داده شده.
  • فایل sample_secrets.py: این فایل بعد clone کردن پروژه باید به اسم secrets.py تغییر کنه، اطلاعات یه ایمیل رو می‌تونید توش قرار بدید تا وقتی کار اسکریپت تموم شد، بهتون ایمیل بزنه و خبر بده چیا دانلود شده و حجمشون چقدر بوده.
  • فایل utils.py: توی این فایل functionality های اصلی قرار گرفته که تو کد اصلی ازشون استفاده شده. مثلا این توابع: چک کنه چیز جدیدی دانلود شده که بهتون خبر بده یا نه، لیست فایل‌ها و حجمشون رو در بیاره، انتقال فایل‌ها رو انجام بده (برای انتقال فایل هم از rsync استفاده شده) و ...
  • فایل main.py: این هم فایل اصلی پروژه است که تو cron قرار می‌گیره و هر ۵ دقیقه یک‌بار ران می‌شه.




تقریبا یکی دو ماهی هست که دارم با این روش فیلم و آموزش و برنامه و ... دانلود می‌کنم و حقیقتا وقتی ایمیل اتمام دانلود میاد خیلی حس خوبی به آدم منتقل می‌کنه :) امیدوارم براتون مفید بوده باشه و کلیت قضیه منتقل شده باشه. همونطور که اول متن هم گفتم، خیلی راحت میشه با یک برنامه دانلود منیجر همه این داستان‌ها رو انجام داد، تو این متن هدف این بوده با چیزایی که بلدیم یه چیزی بسازیم که از استفادش خوشحال بشیم.

در آخر ممنون از وقتی که گذاشتید برای مطالعه متن. این اولین پستی بوده که گذاشتم و امیدوارم بتونم ادامه بدم. ممنون می‌شم نظراتتون رو برام بنویسید تا مطالب بعدی بهتر باشند.

موفق باشید :)