دانلود خودکار یک فایل در یک زمان مشخص در لینوکس :: Mr Python | مستر پایتون

دانلود خودکار یک فایل در یک زمان مشخص در لینوکس

  • ۵۲۹

دانلود خودکار یک فایل در یک زمان مشخص در لینوکس

 

درود به همه .

 

در این قسمت میخوایم یه اسکریپت فوق العاده کاربردی برا خودمون بنویسیم .

 

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

خب امروز میخوایم یک بش اسکریپت بنویسیم که یه ساعت بهش بدیم و یک لینک دانلود . وقتی به اون ساعت خاص رسیدیم مثلا ساعت ۲ نصف شب شد  ، فایل ما خودکار دانلود بشه و پس از اتمام دانلود سیستم به صورت خودکار خاموش بشه .

 

خب حالا این به چه دردی میخوره  ؟ برا من وقتی به دردم میخوره که میخوام یه فیلم دانلود کنم ولی نت شبانه دارم و فرداش هم امتحان دارم بنابر این نمیتون بیدار تاساعت ۲ نصف شب بیدار بمونم 😃 . بنابراین این اسکریپت رو اجرا میکنم تا خودش ساعت ۳ نصب شب برام دانلود کنه وقتی هم که دانلود شد سیستم خاموش بشه. صبح بیدار میشم میرم مدرسه و امتحانمو به خوبی میدمو میام چون شبش خوب خوابیدم😃   .  بعد از مدرسه میام پشت لینوکسم و میبینم که فیلم دانلود  شده و فیلمو با خیال راحت میبینم  😃!

 

 

خب این حرفا بسه بریم سراغ آموزش .

 

ابتدا یه فایل بش میسازیم . اینکار دستور زیر رو میطلبه‌ :

MrPython@debian:~$ touch cinema.sh

هرنامی که دلتون میخواد براش بزارین ولی پسوندش باید sh. باشه . من اینجا "cinema.sh" گذاشتم .

 

خب بعد از ساخته شدن دسترسی اجرایی هم بهش میدیم که بعدا خواستیم اجراش کنیم مشکلی پیش نیاد .! دستور زیر :

MrPython@debian:~$ chmod +x cinema.sh

 

خب بعد از این کارا حالا باید کد هامون رو داخلش بنویسیم. برای اینکار فایل رو با یه ویرایش گر بازش کنید .مثلا میتونید از ویرایش گر های گرافیکی مثل gedit یا ویرایش گر های غیر گرافیکی مثل nano , vim یا ... استفاده کنید .

 

بعد از اجرای فایل با یه ویرایش گر کد های زیر رو داخلش بنویسین (کپی پیست کنین).

#!/bin/bash
file="status.txt";
truncate -s 0 $file
read -p "Download Link : " url
read -p "Time  : " time  
echo "wget \"$url\" && echo \"Finish\" > $file" | at $time
status=$(cat $file)
while [ "$status" != "Finish" ]
do
    sleep 2;
    status=$(cat $file);
done
shutdown -h now

 

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

خط بعد یه متغییر  بهنام file تعریف کردیم و اسم یه فایلیو داخلش ریختیم که قراره اطلاعات کارمون در اون فایل ذخیره بشه مثلا فایل دانلود شد یا نشد .

خلاصه بعدش دوتا ورودی از کاربر گرفتیم و مقادیرشون رو به ترتیب داخل دو متغییر url  و  time  ریختیم . اولی در واقع لینک دانلود فایله و دومی هم که  زمان دانلود فایله که مثلا وقتی بهش میدیم 2:32 یعنی ساعت 2:32 شروع به دانلود کن . خط بعدش هم اومدیم با دستور at در واقع گفتیم دستور دانلود فایل رو دقیقا همون زمانی که تو ورودی از کاربر گرفتیم یعنی متغییر time اجرا کن . .بعدش هم که یه چیزایی نوشتیم که هروقت دانلود شد خاموش بشه سیستم . دیگه بقیشو نمیگم بش نویسی بلد باشین میفهمین خودتون .

 

خب فایلو ذخیره میکنیم . بعد باید اجراش کنیم . برای اجرا میتونیم دستور زیر رو بزنیم :‌

MrPython@debian:~$ ./cinema.sh

 

با نوشتن این دستور اسکریپت اجرا میشه و اون دوتا سوال رو از شما میپرسه . اولین سوال لینکه دانلوده فایلی هست که میخواین دانلود بشه که بهش میدین . سوال بعدی زمان دانلود هستش مثلا بهش میدین 02:54 یعنی ساعت 2:54 شروع به دانلود فایل کن . وهمین . بعد از وارد کردن این دوتا ورودی برنامه منتظر میمونه تا زمان به اون زمانی که گفتین برسه تا دانلود رو شروع کنه و شما با خیال راحت میتونین اینترنت و کامپیوتر و اسکریپت رو باهم تنها بزارین تا خودشون در زمان مشخص کارشونو انجام بدن و وقتی فایل دانلود شد سیستم خاموش شه خودکار .  توجه داشته باشین وقتی برنامه رو اجرا کردین و ورودی ها رو بهش دادین و منتظر بود تا زمانش برسه برای دانلود اون ترمینالی که برنامه رو باهاش اجرا کردین رو نبندین به هیچ وجه چون اگه ببندین برنامه هم بسته میشه . بعد از اتمام دانلود در همان مسیری که برنامه بوده است فایل دانلود شده وجود دارد .

 

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

لینک گیت هاب این اسکریپت‌:‌

https://github.com/mrpythonblog/cinema.git

اگه ایده ای برای بهبود کارایی این اسکریپت داشتین در گیت هاب این اسکریپت رو توسعه بدین .

 

 

یا حق !

نظرات: (۰) هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی