Sebelum membaca turorial ini, anda saya anggap sudah terbiasa dengan bash scripting languange, dan tools2 konsole lainnya. Ingat, sifat dari tulisan adalah seperti biasanya, yaitu ABSOLUTELY NO WARRANTY :) dan akan sewaktu2 menjadi tidak bisa di implementasikan apabila website yg bersangkutan (http://www.grisoft.com/ww.download-update-7), melakukan perubahan hierarki direktori / file-nya.
Sebagai tambahan saja, tutorial ini cocok di implementasikan pada LAN yang cukup middle/besar, dan tidak cocok utk digunakan pada LAN yang kecil karena hanya kan memboroskan bandwidth saja.
Pada dasarnya tutorial ini adalah simple shell script biasa yang fungsinya untuk melakukan parsing text pada file .html, intinya kita ingin mengetahui sebenarnya letak dari file update yg disediakan oleh http://www.grisoft.com/ww.download-update-7, untuk itu kita bisa melakukan langkah2 sbb :
1. Membuat direktori sementara (temporary directory) untuk proses download
lqman@constantine:~$ mkdir -p /mnt/website/update/avg7free/inprogress/
lqman@constantine:~$ cd /mnt/website/update/avg7free/inprogress/
2. Mendonlod halaman awal pada bagian update dari www.grisoft.com
lqman@constantine:~$ wget -c http://www.grisoft.com/ww.download-update-7 -O /mnt/website/update/avg7free/inprogress/donlod.html
3. Parsing text dari file donlod.html
Pada halaman awal yg sudah kita donlod, ada link yang akan menunjukkan pada kita letak file updater yg sebenarnya, cuman kita harus sedikit melakukan rekayasa, sehingga keinginan kita bisa dilakukan secara otomatis. Dari file donlod.html yang harus diambil adalah baris yang mengandung tulisan .bin
lqman@constantine:~$ cat donlod.html | grep .bin | cut -d'=' -f6 > donlod2.html
lqman@constantine:~$ cat donlod.html | grep .bin | cut -d'=' -f8 >> donlod2.html
lqman@constantine:~$ cat donlod.html | grep .bin | cut -d'=' -f9 >> donlod2.html
lqman@constantine:~$ cat donlod2.html | grep "http:" | cut -d '"' -f2 > donlod3.html
untuk menguji apakah script kita diatas sdh sesuai dg yg kita inginkan, kita harus melihat file donlod3.html yg baru saja dihasilkan.
lqman@constantine:~$ cat /mnt/website/update/avg7free/inprogress/donlod3.html
http://www.avg.com/softw/70/update/u7fbsd5291.bin
http://www.avg.com/softw/70/update/u7avi1386g2.bin
http://www.avg.com/softw/70/update/u7iavi17514m.bin
http://www.avg.com/softw/70/update/antispy/u7aspydb2035he.bin
http://www.avg.com/softw/70/update/u7f549yg.bin
http://www.avg.com/softw/70/update/u7fw533yh.bin
http://www.avg.com/softw/70/update/u7lx5298.bin
http://www.avg.com/softw/70/update/u7aspam510yb.bin
http://www.avg.com/softw/70/update/antispy/u7aspy494yb.bin
http://www.avg.com/softw/70/update/u7setup533yc.bin
http://www.avg.com/softw/70/update/u7avi1386u1323g2.bin
http://www.avg.com/softw/70/update/u7avi1386u1382g2.bin
http://www.avg.com/softw/70/update/antispy/u7aspydb3143u2246p1.bin
http://www.avg.com/softw/70/update/antispy/u7aspydb2246u2035zl.bin
4. Hitung banyak file yg hrs d donlod = banyak baris pd donlod3.html
lqman@constantine:~$ jmlbrs=`wc donlod3.html | awk '{print $1}'`
5. Mendefinisikan nama file yg akan di download
lqman@constantine:~$ for i in `seq 1 $jmlbrs`; do basename `head -n $i donlod3.html | tail -n 1`; done > namafile
6. Mulai donload tiap baris
lqman@constantine:~$ for i in `seq 1 $jmlbrs`
do
wget -c `head -n $i donlod3.html | tail -n 1` -O `head -n $i namafile | tail -n 1`
done
7. Membersihkan file temporary dan memindahkan update-an ke tempat yg sebenarnya
lqman@constantine:~$ rm -f /mnt/website/update/avg7free/*.*
lqman@constantine:~$ mv /mnt/website/update/avg7free/inprogress/*.bin /mnt/website/update/avg7free/
lqman@constantine:~$ rm -rf /mnt/website/update/avg7free/inprogress
8. Memperbaharui tanggal direktori
Perbaharuan tanggal direktori ini sengaja dilakukan untuk mempermudah kita mengetahui kapan update terakhir dilakukan.
lqman@constantine:~$ touch /mnt/website/update/avg7free/
9. Setting permission
lqman@constantine:~$ chown -R lqman:lqman /mnt/website/update/avg7free/
10. Jadikan file tsb dalam satu script
lqman@constantine:~$ touch /home/lqman/script-mirror/avg7free.sh
lqman@constantine:~$ mcedit /home/lqman/script-mirror/avg7free.sh
#!/bin/bash
mkdir -p /mnt/website/update/avg7free/inprogress/
cd /mnt/website/update/avg7free/inprogress/
wget -c http://www.grisoft.com/ww.download-update-7 -O /mnt/website/update/avg7free/inprogress/donlod.html
cat donlod.html | grep .bin | cut -d’=’ -f6 > donlod2.html
cat donlod.html | grep .bin | cut -d’=’ -f8 >> donlod2.html
cat donlod.html | grep .bin | cut -d’=’ -f9 >> donlod2.html
cat donlod2.html | grep “http:” | cut -d ‘”‘ -f2 > donlod3.html
cat /mnt/website/update/avg7free/inprogress/donlod3.html
jmlbrs=`wc donlod3.html | awk ‘{print $1}’`
for i in `seq 1 $jmlbrs`; do basename `head -n $i donlod3.html | tail -n 1`; done > namafile
for i in `seq 1 $jmlbrs`
do
$donlod `head -n $i donlod3.html | tail -n 1`$magic -O `head -n $i namafile | tail -n 1`
done
rm -f /mnt/website/update/avg7free/*.*
mv /mnt/website/update/avg7free/inprogress/*.bin /mnt/website/update/avg7free/
rm -rf /mnt/website/update/avg7free/inprogress
touch /mnt/website/update/avg7free/
chown -R lqman:lqman /mnt/website/update/avg7free/
11. Jadikan script avg7free.sh mempunyai mode executable
lqman@constantine:~$ chmod +x /home/lqman/script-mirror/avg7free.sh
12. Jadikan proses update ini berulang sesuai periode yg anda inginkan dengan memasukkannya pada crontab.
lqman@constantine:~$ crontab -e
# daily update avg7free by LQman every 21:00
0 21 * * * /home/lqman/script-mirror/avg7free.sh
Senin, 21 Desember 2009
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar