Monday, December 24. 2007
Kembali ke Windows Scripting Host
Sudah sekian tahun, sejak terakhir saya bekerja di Windows 2000 Server. Yaang terakhir di pertemuan itu adalaah beberapa aplikasi desktop dengan Delphi favorit saya, dan scripting dengan Active Server Pages (ASP). ASP membuat mau tidak mau kita bekerja dengan banyak COM objects dan vbscript/jscript. Ketika Windows 2000 muncul yang saya minati pada saat itu adalah Windows Scripting Host. Windows Scripting Host (WSH) justru saya pelajari balakangan setelah menggauli ASP cukup intens. Menurut yang saya alami, belajar WSH menjadi tak harus mulai dari nol jika kita sebelumnya sudah pernah bekerja dengan ASP.
Tapi karena satu dan lain hal, saya tak sempat lebih dalam lagi dengan WSH, karena mengenal dan bekerjadengan Linux. Terlalu banyak yang menarik untuk digali di Linux. Saya justru belajar dari kulit-kulitnya, yaitu scripting PHP. PHP adalah perpindahan alami seteah dari ASP di Windows. Meski sempat bergaul dengan Cold Fusion (CF), PHP jauh lebih seksi untuk dipelajari saat itu. Tapi seiring lingkungan bekerja di Linux, anda tak bisa jika kemudian mengabaikan mengenal lebih dalam Linux sendiri. Dari System Administration, appication programming, sampai 'digging log' dengan perangkat-perangkat standar di Linux seperti Perl, Bash atau Awk.
Kemudian sampai suatu saat, saya kembali ke lingkungan Windows 2000 sebagai server produksi primer pekerjaan harian saya. Terbiasa bekerja dengan script-script sederhana Bash dan Awk, membuat saya merasa begitu kehilangan ketika menemukan .bat yang kurang memenuhi kemampuan scripting language yang biasa saya gunakan di Linux. Jadilah saya melirik kembali WSH, yang ternyata begitu 'powerful', seolah saya jadi menemukan Bash, Awk dan Perl kembali di lingkungan Windows. Memang, sampai titik tertentu, kita tetap bisa menggunakan Bash, Awk dan Perl di lingkungan Windows. Tapi WSH adalah 'native' di Windows. Meskipun kita mungkin masih memerlukan komponen-komponen COM tambahan, tapi itu tidak terlalu sulit ditemukan di internet, yang gratis maupun yang komersial.
Windows Scripting Host membuat scripting menjadi natural di Windows. WSH dapat memainkan peran yang kurang lebih sama dengan Bash + Cronjob. Ada 2 pilihan bahasa yang dapat digunakan Vbscript dan Jscript. Tak sulit bagi programmer VB untuk geser sedikit ke Vbscript WSH, sebagaimana juga tak sulit bagi programmer javascript untuk geser sedikit ke Jscript WSH.
Berikut ini adalah beberapa contoh WSH Vbscript untuk berbagai keperluan kecil.
Memeriksa Apakah Sebuah Website Hidup atau Mati.
Untuk hal ini, kita memerlukan COM http dari xstandard. Anda akan mendapatkan x-http.zip. Extract dan register COM XHTTP.dll dengan :
regsvr32 XHTTP.dll
Yang kita perlukan kemudian adalah script wsh berikut:
Option Explicit
Dim objHTTP
Set objHTTP = CreateObject("XStandard.HTTP")
objHTTP.AddRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MyApp 1.0; Windows NT 5.1)"
objHTTP.Get "http://localhost"
If objHTTP.ResponseCode = 200 Then
Wscript.echo "Web site is up and running!"
Else
Wscript.echo "Web site is down!!!"
End If
Set objHTTP = Nothing
Apabila kita ingin memeriksa website tersebut secara otomatis setiap 2 menit (misalnya), maka kita sebaiknya menulis sebuah hasilnya ke sebuah file log yang bisa kita baca atau periksa kemudian. Script diatas kita tambahkan menjadi seperti berikut:
Option Explicit
Dim objHTTP
Dim strMessage
Set objHTTP = CreateObject("XStandard.HTTP")
objHTTP.AddRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MyApp 1.0; Windows NT 5.1)"
objHTTP.Get "http://localhost"
If objHTTP.ResponseCode = 200 Then
strMessage = "Web site is up and running!"
Else
strMessage = "Web site is down!!!"
End If
writeLog strMessage, "output.log"
Set objHTTP = Nothing
'writing log'
Sub writeLog (strMessage,strLogFile)
Dim fso 'As Scripting.TextStream
Dim outFile 'As Scripting.FileSystemObject
Const ForAppending = 8 'Scripting.IOMode
Set fso = CreateObject("Scripting.FileSystemObject")
Set outFile = fso.OpenTextFile(strLogFile,ForAppending,True)
strMessage = date() & " " & time() & " " & strMessage
outFile.WriteLine strMessage
outFile.Close
Set outFile = nothing
Set fso = nothing
End Sub
Script diatas dapat anda jalankan dengan scheduller di Windows 2000 setiap 2 menit. Dan anda dapat membuka log file (output.log) untuk menghitung kapan saja sebuah webserver yang anda awasi mati. Jika perlu alert, kita dapat memoifikasinya dengan menggunakan email component (CDONTS), untuk mengirimkan alert ke email kita, jika sebuah website diketahui down.
Download File
Saya menggunakan antivirus lokal PC Media Antivirus, yang kebetulan juga menggunakan library dari clamav. Jadi selain pemeriksa dan data, saya perlu check dan update pustaka virus clamav setiap hari dari situs-situs penyedianya, misal: db.clamav.net. Saya perlu 2 file main.cvd dan daily.cvd. Apa boleh buat, virus lahir setiap hari, jadi kita perlu waspada setiap saat, paling tidak setiap hari kita periksa pustaka virus yang baru.
Option Explicit
Dim objHTTP
Dim strMessage
Set objHTTP = CreateObject("XStandard.HTTP")
objHTTP.AddRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MyApp 1.0; Windows NT 5.1)"
objHTTP.Get "http://localhost"
If objHTTP.ResponseCode = 200 Then
strMessage = "Web site is up and running!"
writeLog strMessage, "output.log"
getVirusLib
Else
strMessage = "Web site is down!!!"
writeLog strMessage, "output.log"
End If
Set objHTTP = Nothing
'writing log'
Sub writeLog (strMessage,strLogFile)
Dim fso 'As Scripting.TextStream
Dim outFile 'As Scripting.FileSystemObject
Const ForAppending = 8 'Scripting.IOMode
Set fso = CreateObject("Scripting.FileSystemObject")
Set outFile = fso.OpenTextFile(strLogFile,ForAppending,True)
strMessage = date() & " " & time() & " " & strMessage
outFile.WriteLine strMessage
outFile.Close
Set outFile = nothing
Set fso = nothing
End Sub
Sub getVirusLib ()
Dim objHTTP
Dim strMessage
Set objHTTP = WScript.CreateObject("XStandard.HTTP")
objHTTP.Get "http://db.clamav.net/daily.cvd"
Response.BinaryWrite objHTTP.ResponseSafeArray
strMessage = "daily.cvd downloaded"
writeLog strMessage, "output.log"
objHTTP.Get "http://db.clamav.net/main.cvd"
Response.BinaryWrite objHTTP.ResponseSafeArray
strMessage = "main.cvd downloaded"
Set objHTTP = Nothing
End Sub
Simpan script diatas sebagai vdownloader.vbs. Meskipun bisa langsung dieksekusi, kita juga dapat membuat dulu Windows Scripting Host (.wsh) file sebagai berikut:
[ScriptFile]
Path=vdownloader.vbs
[Options]
Timeout=60
DisplayLogo=0
Simpan script diatas sebagai vdownloader.wsh, dan eksekusi langsung atau jadwalkan eksekusinya dari Windows Scheduller (AT Command).
Posted by Meta Nurwidyanto
in ICT
at
06:33
| Comments (0)
| Trackbacks (0)
View as PDF: This entry | This month | Full blog
View as PDF: This entry | This month | Full blog
Trackbacks
Trackback specific URI for this entry
No Trackbacks

