Hanya sedikit catatan

September 17, 2009

Update script dns geoip

Filed under: Coding, Network, Operating System — crazynuxer @ 7:43 am

Beberapa hari yang lalu temen saya edi bilang kalau ada masalah dengan traffic local yang tidak seperti biasanya, akhirnya coba dicheck ternyata ada masalah dengan salah satu dns serverku, file acl.conf yg seharusnya berisikan ip iix ternyata kosong melompong, akibatnya tidak ada pembagian yang sesuai karena semuanya dianggap international.Jalankan script bikinanku yang kemarin ternyata ada error dan gagal mendownload list ip akibat file acl.conf nya direplace oleh file acl.conf yang baru dan kosong.

Memberikan mekanisme checking sebelum mendownload langsung terlintas dipikiranku tapi gimana caranya ? baca manual wget belum menemukan pencerahan , baca manual telnet dengan asumsi kalau bisa ditelnet maka linknya pasti benar tapi tetap belum menemukan pencerahan.Akhirnya googling dan menemukan perl script yang berfungsi untuk mengecheck link apakah link tersebut dalam keadaan ok atau broken.

Download perl script tersebut dari situs linklint , setelah mendownload langsung aku pindahkan ke /usr/bin/ dan update script baru , seperti dibawah ini :

[root@sulum dns-conf]# wget  http://www.linklint.org/download/linklint-2.3.5.tar.gz
[root@sulum dns-conf]# tar zxvf  linklint-2.3.5.tar.gz
[root@sulum dns-conf]# cd linklint-2.3.5
[root@sulum linklint-2.3.5]# mv linklint-2.3.5 /usr/bin/linklint

Kemudian update scriptku yang berfungsi mendownload ip iix

[root@sulum dns-conf]# vim download-iix.sh
#!/bin/bash

#Simple Script Update IIX
#created by crazynuxer
linklint http://mikrotik.co.id/getfile.php?nf=nice.rsc -silent > test 2>&1
cond=`cat test |grep ok |awk '{print $1}'`;
if [ "$cond" == "ok" ]; then
        named="/var/named";
        cd $named
        wget http://mikrotik.co.id/getfile.php?nf=nice.rsc
        test=`cat nice.rsc |grep address| awk '{print $3}' | sed -e 's/address="//' | sed -e 's/"//' |grep [0-9]/[0-9]`

        echo "acl iix { " > acl.conf
        for i in $test;
        do
        echo "$i;" >> acl.conf;
        done

        echo "};" >> acl.conf;

        service named reload;
        rm nice.rsc
else
        echo "link error"
        exit 0
fi

setelah kejadian ini kepikiran juga untuk menggandengkan alert dengan sms jika file acl.conf ku masalah atau downloadnya errornya , tinggal nanti coba digabungkan dengan nagios juga :)

September 10, 2009

IFS Bash

Filed under: Coding, My Diary — crazynuxer @ 7:59 am

Kemarin otak-atik bash script buat looping menggunakan for untuk mendelete routing-routing statik yang tidak perlu , karena jumlah nya yang 250 an lebih akhirnya kepikiran di looping pake for. Ternyata for di bash menganggap jika ada white space atau setelah white space maka akan displit dan dianggap variable, misalnya isi variable dari a=”saya makan nasi” maka akan dianggap menjadi 3 variable, contohnya :

a="saya makan nasi"
for i in $a; do
echo $i;
done

Output dari script diatas jika eksekusi adalah

root@crazynuxer:~# bash c.sh
saya
makan
nasi

Bagaimana jika kita ingin membuat satu kalimat itu menjadi sebuah variable ? atau misalnya kita ingin menjalankan perintah route yang panjang seperti atau perintah lain. Caranya adalah dengan mengganti nilai atau value dari IFS (Internal Field Separator), contohnya :

IFS='
'
a="saya makan nasi"
for i in $a; do
echo $i;
done

Output dari script diatas jika dijalankan adalah

root@crazynuxer:~# bash c.sh
saya makan nasi

selain mengeset seperti diatas kita juga menggantinya dengan koma (,) seperti ini contohnya:

IFS=','

a="saya,makan,nasi"
for i in $a; do
echo $i;
done

Output jika dijalankan adalah

root@crazynuxer:~#  bash c.sh
saya
makan
nasi

Cukup sederhana menurut saya, semoga bermanfaat.

Older Posts »

Powered by WordPress