Senin, 21 Desember 2009

Membuat mirror update anti virus AVG7FREE

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

Tidak ada komentar:

Posting Komentar