Script crontab untuk wget

KambingPada sistem operasi Linux, kita sudah tidak awam dengan yang namanya ‘wget’. Adapun fungsinya anda yang bergelut di mesin linux, dah pasti tau kegunaannya…saja jelaskan sedikit –walaupun baru belajar linux– tentang wget, yaitu software pada linux yang berfungsi sebagai downloader/download manager yang text based, mensupport protocol HTTP, HTTPS dan FTP. Software ini dapat anda dapatkan dengan tanpa biaya sedikitpun karena FREE! karena menganut GNU/GPL, jadi bebas untuk didistribusikan lagi.

Adapun, paketnya dapat anda dapatkan di gnu.org untuk paket source-nya. Untuk anda yang berjalan di bawah platform REDHAT, bisa dengan mencari paket RPM di rpmfind.net. Sebenarnya, wget sudah ada pada bawaan distro linux yang anda install…tetapi klo memang anda ingin pake yang terbaru, silahkan datang menuju link yang saya sebutkan sebelumnya.

Direktori kerja kita adalah di ~/download/mp3.
Disini kita akan memulai membuat script-nya dulu, kemudian script ini akan di jalankan oleh crontab.
Buatlah file dengan nama ’start-dl.sh’, gunakan editor ‘vi’ atau ‘nano’. Kemudian ketiklah

#!/bin/sh

case "$1" in
start)
URLFILE=$(cat url.file)
wget -c -b -T 0 -t 0 -o log -i $URLFILE &
ps -auxww | grep $URLFILE | grep -v grep | awk '{ print $2 }' > wget.pid
;;

stop)
kill 'cat ./wget.pid'
rm -f ./wget.pid
;;

*)
echo "Gunakan perintah : $0 {start|stop}"
esac
exit 0

Kemudian, save dan ‘chmod u+x start-dl.sh’ agar bisa di eksekusi.
Buatlah sebuah file biasa dengan nama the-magic-finger-mp3.txt’, kemudian ketikan url file yang akan di download, misalnya ‘http://www.mp3.com/files/balawan/the-magic-finger.mp3′. Save.
Buatlan sebuah file biasa lagi dengan nama ‘url.file’, kemudian ketikan nama file yang menyimpan url yang tertulis diatas seperti the-magic-finger-mp3.txt’. Save. Adapun fungsi dari file ‘url.file’ adalah menyimpan variable yang fungsinya akan dipanggil untuk membuat sebuat pid file. Adapun script yang memanggil variable tersebut seperti yang telah di tuliskan, yaitu :

URLFILE=$(cat url.file)
wget -c -b -T 0 -t 0 -o log -i $URLFILE &
ps -auxww | grep $URLFILE | grep -v grep | awk '{ print $2 }' > wget.pid

dan pada fungsi awk’{print $2}’ > wget.pid adalah mengambil karakter pada layar yang dimana print $2 adalah mencetak pada kolom ke 2, yaitu urutan process id yang sedang running, kemudian di simpan ke sebuah file yang bernama wget.pid, yang dimana file ini akan digunakan oleh crontab.

Kemudian , buat sebuah file dengan nama ‘cronwget.sh’, ketikan :

#!/bin/sh

if test -r ./wget.pid; then
WGETPID=$(cat ./wget.pid)
if $(kill -CHLD $WGETPID >/dev/null)
then
exit 0
fi
fi
./start-dl.sh start &>/dev/null

Chmod file ‘cronwget.sh’ menjadi ‘chmod u+x cronwget.sh’ agar bisa di eksekusi.

Kemudian, atur waktu crontab, pada saat 5 menit akan men-check proses wget tadi, jika proses masih running, lanjutkan download. Tetapi, jika proses download terhenti, jalankan kembali. Proses terhenti bisa karena ‘request time out’ atau komputer shutdown atau restart. Disini peran crontab di perlukan.

Sekarang, edit crontab dengan command : ‘crontab -e’, maka crontab akan meng-edit dengan editor ‘vi’. Kemudian isikan dengan :

5 * * * * cd ~/download/mp3;./cronwget.sh >/dev/null

kemudian, save!

Sampai disini, selesai. Tinggal tunggu 5 menit, crontab akan mengeksekusi cronwget tadi. Jika sudah lebih dari 5 menit, ketikan : ps -aux untuk memastikan apakah proses sudah running.

NOTE : Untuk nama file url seperti ‘the-magic-finger-mp3.txt’, jika anda me-running-kan beberapa download, sangat di sarankan/harus untuk pemberian nama file url berbeda. Hal ini sudah saya jelaskan seperti tertulis diatas.

Semoga bermanfaat!