Sunday, October 5, 2014

Belajar Program Sistem Linux Dengan Bash Shell

Kali ini saya akan menyampaikan sedikit ilmu tentang bagaimana memanajemen sebuah program di dalam sebuah sistem operasi, khususnya disini saya membahas Linux (Ubuntu 14.04), kenapa saya memakai Linux, mungkin teman-teman semuanya sudah pada tahu sebelumnya, bahwa Linux merupakan OS bertipe Open Source yaitu mudah dimodifikasi sendiri tanpa membutuhkan aspek lisensi dari vendor pembuatnya. Dan karena OS ini memang sangat cocok buat metode pembelajaran, khususnya bagi yang minat soal IT :D
Oke, tidak perlu panjang lebar pembukaan saya :D disini saya ingin membuat sebuah program khusus dalam Linux dalam konteks permasalahan membuat manajemen penjadwalan otomatis. Dalam suatu perusahaan atau dunia pendidikan, mungkin ada problem dimana kita disuruh melakukan pengiriman berkas secara online dan berkala (rutin) setiap hari, setiap 1 minggu sekali, setiap 1 bulan sekali, bahkan setahun sekali mungkin :D
jika kita terus berada didepan laptop / komputer untuk mengirimkan berkas setiap saat, itu mah hal yang tidak masalah kawan jika kita betah :D, lha jika misalkan kita sedang repot dan sedang malas pada waktu itu untuk menghadap komputer / laptop atau misalkan kita sedang ada sebuah kegiatan lain diluar, nah ini yang menjadi masalah ... :D tanpa memungkiri kemajuan zaman memang sudah sangat pesat, sehingga kita bisa dengan mudah mengolah teknologi yang ada menjadi lebih bermanfaat.
Problemnya adalah bagaimana caranya membuat program untuk melakukan tugas tanpa kita perintah, dan program itu berjalan secara berkala .. ??

 
bagi yang sudah paham soal programming, ini hal yang tidak masalah, tetapi bagi yang newbie, ini perlu berusaha keras dulu :D seperti saya hehe
Oke langsung saja, untuk membuat program tentunya dengan konteks yang sudah saya abstrakkan di atas yaitu membuat program penjadwalan secara otomatis, dimana nanti tugasnya adalah mendownload file yang isinya adalah jadwal waktu di sebuah server, lalu memasukkan file itu ke dalam folder khusus, nama file dan folder adalah mengikuti waktu sekarang dan itu akan selalu diupdate tiap kali mendownload filenya, lalu isi file yang di download tadi akan direname secara otomatis jika memiliki waktu yang sama dengan waktu sekarang (fisik komputer), jika sudah folder penyimpanan file jadwal tersebut akan dikompres menggunakan tar.gz (Linux) dan di upload ke server tujuan.
Bingung kan ya .. hehe langsung saja ke te ka pe .. :D
  1.  Pertama membuat file bash script, script ini berekstensi .sh, lokasi save nya terserah mau diletakkan dimana, yang penting mudah di akses.
    Scrip bash shell diawali dengan :


  2. Kemudian menyetting proxy, kenapa menyetting proxy, karena kita akan mendownload file di sebuah server yang mengkhususkan menggunakan proxy, jika akses menuju servernya tidak memakai proxy maka bisa dilewati saja.

  3. Kemudian untuk selanjutnya kita akan mendeskripsikan nama file dan folder dengan menggunakan variabel. Disini nantinya nama file akan dirubah (rename) secara teratur sesuai waktu downloadnya, begitu pula nama direktori khususnya akan dibuat sesuai dengan tanggal waktu sekarang.

    folder = mendeskripsikan nama foldernya, file = mendeskripsikan nama filenya, lalu untuk $(date '+%A-%d-%m-%y') dan $(date "+%A-%H-:%M:%S) merupakan nama folder dan filenya. Berhubung namanya menggunakan format date berarti mengambil waktu (jam dan tanggal) komputer sekarang utnuk menjadi namanya. Dan karena ini berupa variabel maka untuk memanggilnya harus ditambahi dengan tanda dolar ($).  
  4. Kemudian membuat direktori khusus untuk meletakkan file hasil downloadnya. Disini saya meletakkan di direktori Documents. Pertama masuk kedalam direktori Documents dengan perintah cd /home/(nama_komputer)/Documents. Kemudian membuat direktori dengan perintah mkdir -p $folder. Saya menggunakan -p agar jika membuat direktori ini dengan nama yang sama akan muncul satu saja direktorinya. Lalu untuk memanggil nama folder yang sudah di di deklarasikan sebelumnya menggunakan tanda ($). Kemudian masuk kedalam direktori itu dengan perintah cd.

    Berarti sekarang lokasi saya ada di /home/(nama_komputer)/Documents/$folder(folder download file).
  5. Kemudian baru saatnya kita mendownload file dari server yang sudah ditentukan dan diletakkan di direktori khusus kita yang sudah dibuat diatas.
    Untuk perintah mendownload / unduh file di  bash shell menggunkan wget kemudian diikuti dengan alamat website yang akan dituju. Untuk spasi di penulisan alamat web diganti menggunakan %20, karena bash shell tidak membaca spasi. Dan di akhir script ini ditambahi dengan -O $nama_yang_akan_dirubah.

    Sampai sini berarti kita sekarang sudah mendownload file dari alamat tersebut dan disimpan pada direktori yang sudah kita buat diata.
  6. Permasalahannya masih ada lagi yaitu merubah isi file dari default (berisikan jam/waktu saja) menjadi (berisikan jam/waktu + keterangan).
    Keterangan didapatkan dari hasil sama atau tidanya isi file yang berupa jam/waktu dengan jam/waktu fisik komputer yang ada sekarang. Dalam langkah harus teliti.

    Dalam script diatas saya membuat variabel baru lagi :
    • waktu yang berisikan jam/waktu sekatang, yaitu untuk membandingkan waktu sekarang dengan waktu (isi dari file tsb).
    • variabel first = 2, yaitu untuk sebagai data line pertama yang akan dibaca pada file tersebut.
    • end=$(wc -l < $file), yaitu untuk data line terakhir yang akan dibaca pada file tersebut.
    Dalam hal ini saya menggunakan varian looping (do - while), ketika isi data pada line ke - $first lebih kecil daripada line ke - $end, maka akan menjalankan statement didalamnya. Dan perulangan ini akan terus berjalan sampai tidak menemukan hasil yang cocok.
    Untuk statement didalamnya looping diatas ada :

    Statement ini untuk membaca angka/huruf/katakter di setiap line data yang ada di file, prinsipnya menggukan prinsip stack pada bahasa C/C++, maksud dari statement ini adalah program akan membaca data di line tersbut tiap karakter dan head dan tail nya akan bergerak menuju berakhirnya pembacaan karakter.
    Lalu setelah itu ada statement if[[$waktu > $time]], jika nilai $waktu lebih besar daripada nilai $time (data yang dibaca di tiap line file), maka data itu akan dirubah (replace) menggunakan perintah perl.

    yang berkotak merah itu adalah karakter awal, dan yang berkotak biru itu adalah karakter yang akan mereplace, keduanya ini akan berjalan jika statement if nya memenuhi syarat. Dan yang di kotakhijau itu adalah lokasi direktori file tersebut.

    Kemudian nilai dari first akan diupdate terus menggunakan ((fitrs++)).
    Sampai sini kita sudah selesai untuk mereplace isi file dengan kata-kata yang ditentukan.
  7. Kemudian selanjutnya adalah membuat script untuk mengkompres dan mengupload file yang kita manajemen tadi. Disini kita membuat file script baru, karena file ini akan dijalankan berbeda dengan file script diatas. Pertama bikin #!/bin/bash dan variabel yang diperlukan.

    Kemudian kita masuk ke direktori dimana tempat folder file kita yang akan diupload, ingat yang diupload ini adalah foldernya ya, bukan isi foldernya.

    Kemudian mulailah mengkompres menjadi zip, dalam Linux disebut tar.gz. Formtanya adalah tar -zcvf Nama_file.tar.gz File_yang_akan _dikompres

    keterangan -zcvf bisa dilihat di petunjuk manual ada di terminal Lunux.
    Proses mengkompres datanya sudah selesai, sekarang tinggal menguploadnya di website tujuan (server).
    Untuk perintah mengupload data/file menggunakan curl -F. didepan curl bisa memakai sudo atau tidak. Tetapi lebih disarankan memakai sudo agar file yang diupload terdata dari super user (user)

    Keterangan myfile itu berarti menguploadnya menggunakan proses manual (biasa) jika ingin yang menggunakan browser (non-manual) bisa memakan mydata.

    yang berkotak biru itu adalah file yang akan diupload dan yang berkotak merah itu adalah alamat tujuannya.

    Nah itu tadi sedikit tutorial dari saya tentang memanajemen sebuah program di dalam sebuah sistem operasi, sedikit pengalaman yang didapat tidak afdol kalau tidak dibagikan ke yang lain, agar kita semua sama-sama mengerti :)
    Mohon maaf juga jika bahasa saya dalam penulisan tutorial ini banyak salahnya, dan tidak teratur. Semoga tutorial ini bisa bermanfaat bagi kawan-kawan semua ^__^

No comments:

Post a Comment