LAPORAN PRAKTIKUM 6A - SISTEM OPERASI (LINUX) "PEMROGRAMAN SHELL"

LAPORAN PRAKTIKUM 6A - SISTEM OPERASI (LINUX)

"PEMROGRAMAN SHELL"







Disusun oleh

Rizki Azka Fihi Aghnia                 2103423004











PROGRAM STUDI RPL BROADBAND MULTIMEDIA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI JAKARTA
2022
Pokok Bahasan
  • Pemrograman Shell
Tujuan Belajar
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
  • Mempelajari elemen dasar shell script
  • Membuat program shell interaktif
  • Menggunakan parameter dalam program
  • Mempelajari test kondisi serta operator logic yang terkait dengan instruksi test
  • Mengenal variable built-in dari shell
  • Membuat aplikasi dengan shell menggunakan konstruksi if-then-else
  • Menggunakan struktur case – esac.
  • Loop dengan while, for, do while.
  • Membuat fungsi dan mengetahui cara memanggil fungsi tersebut.
Dasar Teori
1. SHELL SCRIPT
Shell script dibuat dengan editor teks (ASCII editor) dan umumnya diberikan ekstensi “.sh”. Script selalu diawali dengan komentar, yang dimulai dengan tanda #, disambung dengan ! dan nama shell yang digunakan.

2. VARIABLE
Variable shell adalah variable yang dapat mempunyai nilai berupa nilai String. Tata penulisan variable adalah sebagai berikut:

nama_var = nilai_var

Variable harus dimulai dengan alfabet, disusul dengan alfanumerik dan karakter lain. Variabel dapat ditulis dalam huruf kecil atau huruf besar atau campuran keduanya. Shell membedakan huruf besar dan huruf kecil (case sensitive), contoh:

VPT=poltek
i=5

Pemberian nilai variable tidak boleh dipisahkan dengan spasi, karena shell akan menganggap pemisahan tersebut sebagai parameter, contoh:

VPT =poltek ##error
VPT= poltek ##error

Untuk melihat nilai/isi dari sebuah variable, gunakan tanda $ di depan nama variable tersebut. Pada shell, instruksi echo dapat menampilkan isi variable tersebut, contoh:

VPT=poltek
echo $VPT

Gaji=450000
echo $Gaji
echo $VPT $Gaji

Bila menggunakan string yang terdiri dari lebih dari satu kata, maka string tersebut harus berada dalam tanda kutip atau apostrof, contoh:

VPT=poltek
VPT2=“poltek negeri jakarta”

3. MEMBACA KEYBOARD
Nilai variable dapat diisi melalui keyboard (stdin) dengan instruksi read.

4. PARAMETER
Sebuah program shell dapat mempunyai parameter sebanyak 9 buah dan direpresentasikan melalui variable khusus yaitu variable $!, $2, $3, $4, $5, $6, $7, $8 dan $9. Nama program she ll (nama script) direpresentasikan melalui variable $0.

Jumlah parameter dinyatakan sebagai $#. Bila tidak memberikan parameter, maka nilai $# adalah 0.

Shell variable $* menyatakan seluruh string yang menjadi parameter / argumen sebuah script ($@ mempunyai arti yang sama). $$ menyatakan nomor proses id (pid) dari script yang dijalankan. Pid ini akan terus berubah (umumnya) menaik, setiap kali proses berjalan.

5. STATUS EXIT
Setiap program setelah selesai dieksekusi akan memberikan informasi melalui variable spesial $?. Indikasi yang diberikan adalah:
  • Bila program berakhir dengan sukses, $? = 0
  • Bila program berakhir dengan error, $? ¹ 0
  • Nilai dari status exit dapat dilihat melalui instruksi echo $?
6. KONSTRUKSI IF
if akan mengeksekusi instruksi-awal, dan exit status dari instruksi tersebut akan menjadi kondisi. Bila 0, maka instruksi selanjutnyua masuk ke dalam blok then. Bila tidak 0, maka alur program diteruskan setelah kunci kata fi.

7. KONSTRUKSI IF THEN ELSE
Bila status exit tidak sama dengan 0, maka kondisi menjadi FALSE dan instruksi setelah else akan dijalankan.

8. INSTRUKSI TEST
Instruksi test digunakan untuk memeriksa kondisi dari sebuah ekspresi. Ekspresi terdiri dari faktor dan operator yang dipisahkan oleh spasi. Hasil test akan memberikan nilai berupa status exit, yaitu 0 bila ekspresi sesuai, bila tidak maka hasil adalah bukan 0.
  • Operator untuk test
  • Test untuk files dan directory
Test dapat dilakukan untuk memeriksa apakah file ada (Exist), dapat dibaca, dapat ditulis, kosong dan lainnya.

Untuk memudahkan pembacaan (readability), test dapat ditulis dengan

[ ekspresi ]

[ sebenarnya adalah nama lain dari test, bedanya [ akan mencari kurung penutup ] pada akhir ekspresi yang harus dipisahkan oleh spasi.

9. LOGICAL && DAN || (SHELL LEVEL)
Notasi && dan || digunakan untuk menggabungkan instruksi shell sebagai alternatif untuk if then else. Notasi && dan || sering ditemukan adalah shell script system administrator untuk menjalankan routine dari system operasi.
  • instruksi1 && instruksi2
Shell akan mengeksekusi instruksi1, dan bila exit status instruksi1 adalah FALSE, maka hasil dari AND tersebut sudah pasti sama dengan FALSE, sehingga instruksi2 tidak mempunyai pengaruh lagi. Oleh karena itu, instruksi2 tidak dijalankan. Sebaliknya bila hasil instruksi1 adalah TRUE(0), maka instruksi2 dijalankan.
  • instruksi1 || instruksi2
Shell akan mengeksekusi instruksi1, bila exit status adalah TRUE(0), hasil dari operasi OR tersebut sudah pasti menghasilkan TRUE, terlepas dari hasil eksekusi instruksi2. Oleh karena itu instruksi2 tidak perlu dijalankan. Bila hasil instruksi1 adalah FALSE, maka instruksi2 akan dijalankan.

10. OPERATOR BILANGAN BULAT UNTUK TEST
Untuk membandingkan 2 buah bilangan, test memerlukan operator yang berbeda dengan string.


11. OPERATOR LOGICAL (TEST LEVEL)
Logical operator terdiri dari AND, OR dan NOT. Operator ini menggabungkan hasil ekspresi sebagai berikut :
NOT: symbol !
AND: symbol -a
OR: symbol -o

12. KONSTRUKSI IF THEN ELSE IF
Bila status exit tidak sama dengan 0, maka kondisi menjadi FALSE dan instruksi setelah else akan dijalankan.

13. HITUNGAN ARITMETIKA

Tipe dari variable SHELL hanya satu yaitu STRING. Tidak ada tipe lain seperti Numerik, Floating, Boolean ata u lainnya. Akibatnya variable ini tidak dapat membuat perhitungan aritmetika, misalnya:

A=5
B=$A +1 ## error

UNIX menyediakan utilitas yang bernama expr yaitu suatu utilitas yang melakukan aritmetika sederhana.

14. INSTRUKSI EXIT
Program dapat dihentikan (terminated/selesai) dengan instruksi exit. Sebagai nilai default program tersebut akan memberikan status exit 0.

15. KONSTRUKSI CASE
Case digunakan untuk menyederhanakan pemakaian if yang berantai, sehingga dengan case, kondisi dapat dikelompokkan secara lo gis dengan lebih jelas dan mudah untuk ditulis.
Case diakhiri denan esac dan pada setiap kelompok instruksi diakhiri dengan ;;. Pada akhir pilihan yaitu *) yang berarti adalah “default”, bila kondisi tidak memenuhi pola sebelumnya.

16. KONSTRUKSI FOR
For digunakan untuk pengulangan dengan menggunakan var yang pada setiap pengulangan akan diganti dengan nilai yang berada pada daftar (list).
17. KONSTRUKSI WHILE
While digunakan untuk pengulangan instruksi, yang umumnya dibatasi dengan suatu kondisi. Selama kondisi tersebut TRUE, maka pengulangan terus dilakukan
Loop akan berhenti, bila kondisi FALSE, atau program keluar dari blok while melalui exit atau break.

18. INSTRUKSI DUMMY
Instruksi dummy adalah instruksi yang tidak melakukan apa -apa, namun instruksi ini memberikan status exit 0 (TRUE). Oleh karena itu, instruksi dummy dapat digunakan sebagai kondisi forever pada loop (misalnya while). Simbol instruksi dummy adalah => :

19. FUNGSI
Fungsi adalah program yang dapat dipanggil oleh program lainnya dengan menggunakan notasi NamaFungsi(). Fungsi memberikan exit status ($?) yang dinyatakan dengan return nr, atau nilai 0 sebagai default.

Membuat fungsi diawali dengan nama fungsi, parameter, kemudian blok program yang dinyatakan dalam { … }.

Contoh:

F1( ) {
……..
……..
return 1
}

Variabel dapat didefinisikan dalam fungsi sebagai variable local atau global. Hal yang perlu diperhatikan, nama variable yang digunakan dalam sebuah fungsi, jangan sampai bentrok dengan nama variable yang sam adi luar fungsi, sehingga tidak terjadi isi variable berubah.
Tugas Pendahuluan
Sebagai tugas pendahuluan, bacalah dasar teori diatas kemudian buatlah program Shell untuk Latihan 1 sampai dengan 5.
Percobaan 1 - Membuat Shell Script
File prog01.sh dibuat menggunakan editor vi dengan memasukkan perintah $ vi prog01.sh. Tanda # digunakan sebagai komentar. Program yang digunakan adalah program shell dengan /bin/sh. Penggunaan variabel assignment tidak boleh menggunakan spasi diantara nama. Untuk keluar dari editor dilakukan dengan cara menekan esc, kemudian :wq! yang berarti menyimpan serta exit, lalu kemudian enter.

Program tidak bisa dijalankan apabila tanpa titik di depan nama program karena file belum di executable. Tanpa diexecutable, program masih dapat dijalankan menggunakan titik yang diletakkan di depan nama file atau .(spasi)nama file.sh.

$ chmod+x digunakan untuk mengubah file menjadi executable. Sedangkan perintah $ ./prog01.sh digunakan untuk menjalankan file yang executable.

Percobaan 2 - Variabel
$ VPT adalah variabel yang dapat mempunyai nilai berupa string. Pada percobaan ini, kita mencoba menginputkan kata poltek ke $ VPT. Sehingga pada saat program membaca $ VPT, maka akan muncul poltek. $ echo digunakan untuk mencetak string yang sebelumnya telah diinputkan pada variabel VPT.

Pada saat mengetik perintah pertama, terdapat pesan error karena variabel tidak dapat dijalankan apabila ada dua instruksi yang menggunakaan tanpa adanya tanda petik dua. Apabila dalam variabel terdapat lebih dari satu instruksi, maka harus mengguanakan tanda petik dua atau diapit dalam tanda petik dua sehingga isi dari variabel tersebut dapat dicetak menggunakan $ echo. Ketika ingin mencetak variabel dengan perintah echo, harus disertai dengan $ agar isi dalam variabel dapat dicetak.

Pada percobaan ini, kita membuat 3 variable. Kemudian ketiga variabel tersebut digabungkan dengan cara membuat variabel keempat yang merupakan gabungan isi dari variabel 1 hingga 3. Lalu untuk menjalankan perintah untuk mencetak isi dari variabel 1 hingga 3, menggunakan perintah $ echo $V4.

Variabel V3 sudah mempunyai instruksi berupa jakarta. Perintah $ echo $V3ITS ketika dibaca menghasilkan string kosong karena variabel V3 digabungkan dengan nama variabel yang belum didefinisikan atau kosong. Oleh karena itu untuk menggabungkan isi file V3 dengan string “ITS”, variabel V3 harus diproteksi dengan {} dan digabungkan dengan string. Sehingga ketika dijalankan, outputnya menjadi jakartaITS.

$ CMD digunakan untuk melihat tanggal dan waktu user saat aktif. Variabel dapat dijadikan input shell dan kemudian dapat dieksekusi. Ketika perintah $ $CMD dijalankan, output yang keluar adalah output berupa tanggal dan waktu user aktif. Perintah $ CMD=”ls -l” digunakan untuk melihat file secara lengkap yang dipanggil dengan perintah $ $CMD untuk dieksekusi (sama seperti jika memasukkan perintah ls -l saja). Untuk memasukkan lebih dari satu kata harus diapit dengan tanda petik.

Pada percobaan ini, variabel-variabel digabungkan menggunakan editor vi. Maksud dari program diatas adalah pertama kita akan mencetak “Pemrograman shell”. Selanjutnya kita membuat variabel V1 yang berisi poltek, V2 yang berisi :, dan V3 yang berisi jakarta. Kemudian kita menggabungkan ketika variabel tersebut sehingga mencetak “poltek : jakarta”. Kemudian kita membuat lagi variabel V3 yang berisi ITS. Kemudian kita menggabungkan variabel V1, V2, dan ditambah $V3 baru. Sehingga terakhir kita akan mencetak “poltek: di ITS”.
Untuk mengeksekusi program tersebut, dapat dipanggil menggunakan perintah $ .prog01.sh, $ ./prog01.sh. Perintah $ chmod +x prog01.sh digunakan untuk membuat file prog01.sh menjadi executable. Program dapat terjadi error dikarenakan belum di executable.

Percobaan 3 - Membaca Keyboard
Untuk memasukkan nilai ke dalam variabel juga bisa melalui keyboard dengan menggunakan $ read. Ketika membaca isi variabel nama dengan perintah echo, maka isi variabel tersebut akan dicetak.

Program yang ditulis pada editor vi adalah perintah yang digunakan untuk membaca nama dan alamat keyboard di perintah selanjutnya.

Setelah program dieksekusi, outputnya seperti pada gambar diatas, dimana inputnya diketik sendiri lalu hasilnya berupa “Amir, Jl Margonda 67 di Depok”.

Pada dasarnya kode program ini sama dengan program kode dengan sebelumnya, hanya saja ditambahkan -n yang berarti menghilangkan baris baru setelah mencetak kata. Misal pada program echo-n “Nama Anda : “ read nama jadi setelah mencetak nama Anda, maka inputan nama akan berada disamping Nama Anda, bukan berada di bawahnya.

Terlihat bahwa outputnya berada disamping dan bukan pada baris baru ketika menginputkan nama, alamat, dan kota.

Pada percobaan ini menggunakan variabel kosong. Variabel ini didapat atas assignment atau membaca dari keyboard atau variabel yang belum didefinisikan.

Variabel dapat disubstitusikan dengan hasil suatu instruksi. Contonya pada percobaan kali ini kita menuliskan $ DIR=`pwd` artinya kita menginputkan perintah pwd dan hasilnya akan disimpan pada variabel DIR. Sehingga saat kita membaca variabel DIR, maka yang muncul adalah sama dengan saat kita menginputkan perintah $ pwd.

Maksud dari program diatas adalah output dari perintah whoami akan disimpan di dalam variabel NAMA dan kemudian kita mencetak “Nama pengguna aktif adalah (output whoami)”. Selanjutnya kita menginputkan perintah date | cut -c1 -10. Output dari perintah tersebut akan disimpan di dalam variabel tanggal. Kemudian kita mencetak “hari ini tanggal (output dari date | cut -c1 -10).

Output dari program tersebut terlihat pada gambar yang mana output dari whoami adalah randomuser dan output dari data | cut -c1-10 adalah Sel 11 Jan.

Percobaan 4 - Parameter
Maksud dari program di atas adalah pada baris nama program adalah $0, $0 adalah menampilkan parameter nol yaitu berupa nama program. Program yang kita gunakan adalah program bash maka outputnya adalah bash. Baris selanjutnya parameter 1 adalah $1 yang menampilkan parameter pertama sesuai masukan dan parameter 2 adalah $2 yang menampilkan parameter kedua. Sedangkan $3 maksudnya menampilkan parameter ketiga dan seterusnya.

Perintah di atas digunakan untuk mengeksekusi prog04.sh dengan menambahkan 2 parameter dan 4 parameter. Tetapi pada parameter ke 4, variabel “ali” tidak dapat diinputkan karena program shell hanya menyediakan untuk 3 parameter saja.

Pada file prog04.sh versi 2 ini hanya terdapat tambahan baris “jumlah parameter yang diberikan $#”. Maksud dari $# adalah menghitung parameter yang kita berikan.

Perintah pertama digunakan tanpa menginputkan parameter, sehingga output dari programnya mencetak “Jumlah parameter yang diberikan adalah 0” pada baris pertama. Perintah kedua menginputkan 4 parameter yaitu amir, hasan, badu, dan ali. Walaupun output program hanya bisa mencetak hingga 3 parameter saja sehingga parameter ali tidak dapat tercetak, namun kita tetap dapat mengetahui jumlah parameter yang diinputkan pada output baris pertama yaitu “Jumlah parameter yang diberikan adalah 4”.

Hanya ditambahkan program total parameter dan PID proses shell. $* digunakan untuk menampilkan seluruh parameter yang diberikan. Sedangkan $$ digunakan untuk menampilkan nomor PID proses program kita.

Setelah dieksekusi dengan memberikan parameter amir hasan badu ali, output program prog04.sh adalah total parameternya amir hasan badu ali dan nomor PID nya adalah 8080.

Percobaan 5 - Status Exit
$ grep xyz /etc/passwd digunakan untuk mencari file xyz di dalam direktori etc di dalam passwd. Cara untuk mengecek status exit adalah dengan echo $. Jika string tidak ditemukan, maka status exit adalah 1. Namun jika string ditemukan, maka status exit adalah 0.

Dilakukan pencarian file yang menampilkan user yang pernah login ke dalam sistem. Jika setelah dicek status exitnya bernilai 0, maka string tersebut ditemukan.

Percobaan 6 - Konstruksi If
$ who digunakan untuk melihat user yang aktif dengan tanggal dan waktu. Perintah $ who | grep <user> bermaksud mencari kata randomuser di dalam output perintah $ who. Dan saat dicek status exitnya, terdeteksi bahwa status exitnya adalah 0 sehingga kata egpyt ditemukan.

$ if adalah perintah yang digunakan untuk mengecek status exit dengan konstruksi if. Jika status exitnya 0 maka program akan mencetak “Pemakai tersebut sedang aktif”.


Percobaan 7 - Konstruksi If then Else
Program prog05.sh dibuat dengan menggunakan editor vi. Perintah echo -n “Berikan nama pemakai : “ akan mencetak tulisan tersebut ketika dieksekusi dan program akan membaca variabel nama dengan perintah read nama ketika user menginputkan nama pemakai. Nama yang diinputkan user akan disimpan dalam variabel nama. Kemudian jika nama yang diinputkan sama dengan nama user yang sedang aktif, maka program akan mencetak “<user> sedang aktif”, sebaliknya jika nama yang diinputkan bukan user yang sedang aktif, maka program akan mencetak “<user> tidak aktif”.

$ who digunakan untuk mengecek user yang sedang aktif. Ketika perintah $ . prog05.sh dijalankan, kita menginputkan nama user yang sedang aktif contohnya randomuser, maka program akan mencetak “randomuser sedang aktif”. Sebaliknya, jika kita menginputkan user yang tidak aktif, contohnya martis, maka program mencetak “martis tidak aktif”.
Kesimpulan
Berdasarkan percobaan yang telah dilakukan, dapat disimpulkan bahwa pemrograman shell dengan looping if-else dan if-then-else dapat digunakan untuk memeriksa apakah suatu kondisi telah terpenuhi agar output yang dinginkan dapat tercapai.





Komentar

Postingan populer dari blog ini