Kamis, 31 Juli 2008

Cinta 'n' Hati Anak PhysicsArchimedes n Newton

takkan m'ngerti Medan magnet yang berinduksi diantara kitaEinstein n Edison tak sanggup merumuskan rasa cinta kita
Pertama kali bayanganmu jatuh tepat difokus hatikuNyata, tegak dan diperbesar dengan kekuatan lensa maksimum
Bagai tetes Milikan jatuh diruang hampaCintaku padamu lebih besar dari bilangan Avogadro
Walau jarak kita bagai matahari dan pluto saat aphelium
Amplitudo gelombang hatimu tetap berinterferensi dengan hatiku
Seindah gerak harmonik sempurna tanpa gaya pemulihBagai kopel gaya dengan kecepatan anguler y6 tak terbatas
Energi mekanik cintaku padamu tak terbendung oleh friksi
Energi potensial cintaku tak terpengaruh oleh tetapan gayaEnergi kinetik cintaku padamu = 1/2 mv2
Hukum kekekalan energi tak dapat menandingi kekekalan cinta antara kita
Lihat hukum cinta kita: Momen cintaku tegak lurus dengan momen cintamu
Menjadikan cinta kita sbg titik ekuilibrium yang sempurna
Dengan inersia tak terhinggaTakkan tergoyahkan oleh impuls ataupun momentum gayaInilah resultan momentum kita...

Jumat, 18 April 2008

SMS Getway

Memonitor Koneksi Server
dengan SMS Gateway

Bila Anda seorang admin atau pengelola server, tentunya ingin selalu memonitor koneksi server. Misalnya, apakah dalam keadaan terhubung ke Internet atau tidak. Dengan SMS gateway, Anda dapat menerima laporan status koneksi itu melalui SMS.

Monitoring server menjadi penting, misalnya bila tiba-tiba anda akan melakukan back-up data tiap akhir bulan dan koneksi Internet Anda putus. Metode yang akan penulis terangkan tidak hanya terbatas untuk yang terkoneksi ke Internet, tetapi juga untuk jaringan LAN. Dalam hal ini yang terpenting adalah:
1. SMS gateway (Kannel).
2. Library browser perl (Perl-libwww).
3. Bash shell scripting.
4. Crontab.

Prinsip untuk memonitor server ini adalah sebagai berikut:
Ø Server akan mengirimkan perintah ping ke suatu server, kemudian dari hasil respon tersebut dapat dianalisis bahwa server tersebut masih tersambung de ngan Internet atau tidak.
Ø Pengetesan dan analisis dilakukan dengan bash script.
Ø Untuk melakukan pengecekan tiap waktu menggunakan task scheduler (crontab) yang telah dibahas pada InfoLINUX edisi Juli 2004.

Instalasi SMS gateway kannel
Mengapa kannel? Karena kannel adalah SMS gateway yang free dan kompatibel dengan ponsel phase 2+ dan juga GSM modem.

Cara instalasi:
1. Cari tempat download source atau paket.
Penginstalan menggunakan source (versi CVS). Versi CVS adalah versi yang terbaru. Versi CVS dan versi yang stabil dapat di-download dari www.kannel.org.
Pertama, buat direktori gateway untuk menampung hasil download:
root]# mkdir gateway

2. Buatlah bash script kannel.sh dengan
perintah cat atau teks editor kesukaan Anda. Script ini untuk men-download paket dari server CVS.
root]# cat > kannel.sh #!/bin/sh
cvs -d:pserver:anonymous@cvs.kannel.org:/home/cvs login
cvs -d:pserver:anonymous@cvs.kannel.org:/home/cvs cogateway
[Ctrl] [D]
root]#
Catatan: Tekan Ctrl-D itu untuk mengakiran pengetikan dan menyimpan menjadi file kannel.sh.

3. Ubah mode atau atribut fi le kannel.sh agar dapat dieksekusi dengan memberi +x.
root]# chmod +x kannel.sh

4. Mulai download dengan menjalankan program kannel.sh. Asumsinya, konfigurasi server sudah terhubung ke jaringan dan dapat mengakses server CVS di Internet.
root]# ./kannel.sh
Tunggu sampai selesai download. Hasil download ada di direktori gateway yang telah Anda buat di komputer yang akan menjadi gateway. Karena kannel dalam hal ini hanya digunakan sebagai monitoring server, Kannel hanya untuk mengirimkan mengirimkan SMS. Jadi penggunaan kannel tidak dioptimalkan untuk selain itu.

5. Masuk direktori gateway tersebut, lalu jalankan konfi gurasi dan instalasi.
root]# cd gateway
gateway]# ./configure –enablestart-stop-daemon
gateway]# touch .depend
gateway]# make depend
gateway]# make
gateway]# make install

6. Buat fi le-fi le konfi gurasi. Dalam contoh ini penulis menggunakan nama fi le sms. conf, modems.conf, smsbox.conf, dan sendsms.conf. Simpan fi le-fi le tersebut pada direktori /etc/kannel/. Contoh fi le sms.conf:
group = core
admin-port = 13000
smsbox-port = 13001
admin-password = bar
status-password = foo
#admin-deny-ip = “”
#admin-allow-ip = “”
log-file = “/var/log/kannel/bearerbox.log”
log-level = 0
access-log = “/var/log/kannel/bearerbox_access.log”
store-file = “/var/log/kannel/kannel.store”
box-allow-ip =“127.0.0.1;192.168.*.*”
box-deny-ip = “*.*.*.*”
# SMSC CONNECTIONS
group = smsc
smsc = at
smsc-id = GSMModem
modemtype = iTegno
#modemtype = ME45
#modemtype = ericsson_t68
#modemtype = siemens_c60
device = /dev/ttyUSB0
#device = /dev/ttyS0
speed = 115200
#speed = 96000
sim-buffering = true
my-number = +62817777777
validityperiod = 168
# MODEM
include = “modems.conf”
# SMSBOX SETUP
include = “smsbox.conf”
# SEND-SMS USERS
include = “sendsms.conf”

Contoh fi le modem.conf:
group = modems
id = iTegno
detect-string = “WAVECOM”
detect-string2 = “MODEM”
speed = 115200
need-sleep = true
sendline-sleep = 10
message-storage = “SM”
#enable-mms = true
#no-pin = true
#no-smsc = true

group = modems
id = ME45
need-sleep = false
sendline-sleep = 1000
message-storage = “MT”
#enable-mms = true

group = modems
id = ericsson_t68
name = “Ericsson T68”
detect-string = “T68”
init-string = “ATQ0E1V1”
keepalive-cmd = “AT+CBC;+CSQ”
broken = true
#message-storage= “ME”
#no-smsc = true
#if you want direct message indication instead of sim buffering
#init-string = “AT+CNMI=3,3”

group = modems
id = siemens_c60
name = “Siemens C60”
init-string = “AT+CSMS=1+CNMI=1,2,0,0,1”
enable-hwhs = “AT\Q3”
need-sleep = true

Contoh fi le smsbox.conf:
group = smsbox
bearerbox-host = localhost
smsbox-id = SMSbox
sendsms-port = 13013
#global-sender = 13013
#sendsms-chars = “0123456789+-”
log-file = “/var/log/kannel/smsbox.log”
log-level = 2
access-log = “/var/log/
kannel/smsbox_access.log”

Contoh fi le sendsms.conf:
group = sendsms-user
username = tester
password = foobar
name = SMSThrower
concatenation = true
max-messages = 99
user-deny-ip = “*.*.*.*”
user-allow-ip =“127.0.0.1;192.168.*.*”
#faked-sender = “+62817309405”

7. Buat direktori /var/log/kannel untuk menyimpan log dari sms gateway. Dalam contoh ini penulis memberikan contoh konfi gurasi untuk ponsel Sonny Ericsson T68/T68i, Siemens C60, Siemens ME45, dan modem GSM Itegno. Perhatikan sms.conf, bagian SMSC CONNECTIONS, yang menunjukkan penulis menggunakan modem GSM iTegno.
root]# mkdir /var/log/kannel

8. Jalankan program daemon.
root]# cd /usr/local/sbin
sbin]#./start-stop-daemon --
start --exec bearerbox sms.
conf &
sbin]#./start-stop-daemon --
start --exec smsbox sms.
conf &

Install modul atau paket perl-libwww
Modul ini membantu kita untuk berinteraksi dengan suatu website melalui konsol. Dalam hal ini diasumsikan Perl sudah terinstall. Penulis menggunakan distro Mandrake 10 Powerpack yang sudah menyertakan modul ini. Cara mengetes apakah sudah terinstal, yaitu:

root]# GET -e ‘www.google.com’
Cache-Control: private
Connection: close
Date: Mon, 28 Jun 2004 18:22:11GMT
Server: GWS/2.1
Content-Length: 2017
Content-Type: text/html
Content-Type: text/html;
charset=ISO-8859-1
Client-Date: Mon, 28 Jun 2004 18:22:39 GMT
Client-Peer: 216.239.57.99:80
Client-Response-Num: 1
<....dipotong....>

Script di atas menunjukkan perl-libwww sudah terinstal. Bila belum terinstal dan distro Linux yang Anda gunakan belum menyertakan dalam CD-nya, maka Anda dapat download paket perl-libwww dari Internet. Berikut ini perintah menginstal paket RPM untuk Mandrake :
root]# rpm -ivh perl-libwwwperl-5.76-3mdk.noarch.rpm

Kemudian test dengan user tester dan pass foobar.
# GET -e ‘http://localhost:13013/cgi-bin/sendsms?user=tester&pass=foobar&from=so mebody&to =%2b6281999&text=hello%20world’

Perintah di atas akan mengirim SMS ke nomor 6281999, dengan pesan “hello world”. Jika nomor HP tersebut menerima SMS, berarti konfi guasi Kannel dan perllibwww berhasil.

Membuat program analisis
Untuk menentukan koneksi Internet kita terputus atau tidak, kita akan membuat Bash script pod.sh . Penulis menggunakan methode ping. File ini agak panjang, sehingga agar mudah gunakan teks editor, misalnya vi. Untuk menyimpan pengetikan dengan vi, tekan ESC:wq.


root]# cd /usr/local/sbin/sbin]# vi pod.sh
#!/bin/sh
echo ‘tunggu sebentar....’
hasil=$(ping -c 1 $1head -n2tail -n 1)
hasil=${hasil:0:2}
if [ “$hasil” != “64” ]
then
idup=$(cat urip.txt)
if [ “$idup” = 1 ]
then
echo 0 > urip.txt
echo ‘servernya nggak konek’
jam=$(date +”%H:%M:%S”)
echo $jam
#GET -e “http://localhost:13013/cgibin/sendsms?user=tester&pass=foobar&from=som ebody&to=%2b62817309405&text=Servernya%20nggak%20konek%20boz%20pada%20$jam”
else
echo ‘Servernya tetep nggak konek boz’
fi
else
idup=$(cat urip.txt)
if [ “$idup” = 0 ]
then
echo 1 > urip.txt
echo ‘horeeee hidup lagi’
#GET -e ‘http://
localhost:13013/cgi-bin/sendsms?user=tester&pass=foobar&from=somebody&to=%2b62817309 405&text=Servernya%20konek%20lagi%20boz’
else
echo ‘servernya tetep ok’
fi
fi
Ubah menjadi fi le yang dapat dieksekusi:
sbin]# chmod +x pod.sh
sbin]# touch urip.txt

Untuk melakukan test pada skrip ini tuliskan perintah berikut:
#/usr/local/sbin/pod.sh10.2.6.228
tunggu sebentar....servernya tetep ok

Host 10.2.6.228 di atas merupakan contoh dari penulis. Kondisi awal dari komputer yang dimonitor adalah hidup, yaitu dengan nilai 1 pada berkas /usr/local/ sbin/urip.txt. Skrip pod.sh akan me ngirim SMS ke no 6281999 apabila terjadi perubahan status keadaan komputer yang dimonitoring. Skrip tersebut akan melakukan ping terhadap komputer 10.2.6.228, apabila komputer dalam keadaan hidup maka akan membalas perintah ping dan tidak mengubah status, sehingga tidak mengirimkan SMS. Potongan skrip tentang ping di atas adalah:
hasil=$(ping -c 1 $1head -n2tail -n 1)

Perintah ping dengan 1 paket data dan hasilnya diambil pada perintah baris kedua:
hasil=${hasil:0:2}

Skrip di atas berarti mengambil huruf ke-0 sebanyak 2 untuk dianalisis. Apabila komputer tetap hidup jawabannya adalah:
64 bytes from 10.2.6.228: icmp_seq=1 ttl=64 time=0.140 ms

Skrip di atas mengambil sebanyak 2 dari huruf ke-0 yaitu 64 ini berarti komputer tersebut hidup. Sedangkan bila komputer tersebut mati, hasilnya adalah:
From 10.2.6.5 icmp_seq=1
Destination Host Unreachable

Skrip di atas mengambil sebanyak 2 huruf mulai huruf ke-0 yaitu Fr. Perubahan status akan ditulis dalam berkas bernama urip.txt pada direktori /usr/local/sbin/. Apabila terjadi perubahan status, maka secara otomatis melakukan pengiriman ke no 6281999. Jika perubahan dari status 0 (terputus) ke status 1 (terhubung) akan mengirimkan pesan “Servernya konek lagi boz”. Sedangkan bila perubahan dari status 1 (terhubung) ke status 0 (terputus) akan mengirimkan pesan “Servernya nggak konek boz pada $jam”. $jam di sini sesuai dengan jam komputer SMS gateway.

Mengatur jadwal pengecekan dengan crontab
Untuk menjalankan skrip ini bisa sebagai user biasa (bukan root).
$ crontab –e

Tekan tombol [i] atau [insert], kemudian isi sebagai berikut:
5 * * * /usr/local/sbin/pod.sh
10.2.6.228 >/dev/null

Simpan dengan menekan ESC:wq. Artinya tiap 5 menit akan mengecek koneksi ke alamat ip 10.2.6.228, dan mengirim hasilnya ke SMS, tanpa memberikan laporan ke e-mail account crontab Anda.
Anda bisa mengubah alamat IP dan mengubah delay waktu tersebut. Sebelum Anda meninggalkan server gateway, pastikan bahwa program daemon crond sudah diatur menyala pada saat booting. Sebagian besar distro Linux memiliki direktori /etc/rcX.d/ untuk mengatur program (service) apa saja yang dijalankan saat booting. X adalah nomor init, yang nilainya antara 0 hingga 6. Nomor init untuk booting dicantumkan dalam fi le /etc/inittab pada baris id:X:initdefault:. Jadi, jika X adalah 3, lihat direktori /etc/rc3.d/ dan pastikan huruf paling depan fi le xyzcrond adalah S, misalnya S60crond. Jika masih K60crond, rename dengan perintah mv K60crond S60crond. Setelah crontab terpasang, maka setiap 5 menit komputer gerbang SMS akan memonitor komputer yang beralamat 10.2.6.228. Skrip pod.sh di atas bisa dikembangkan dengan metode yang lebih akurat misalnya dengan mengamati port dengan nmap. Selamat berkreasi! Ryan Fabella (ryanthe@limaxindo.com)