Rabu, 23 Desember 2009

USER & GROUP DI LINUX

MENGOLAH USER DAN GROUP DI LINUX


Dalam sistem berbasis Linux memiliki username-username spesial untuk kepenrtingan fungsi-fungsi sistem. Username ini memiliki UID sebagaimana username yang diasosiasikan untuk user-user. Berikut ini user-user umum yang dimiliki oleh default sistem UNIX/Linux :
- root, yakni superuser yang membentuk account dan mengendalikan fungsi-fungsi sistem.
- daemon atau sys, yang menangani aspek-aspek jaringan. Username ini diasosiasikan juga utilitas sistem lain, seperti print spooler dalam beberapa versi tertentu.
- agent, yang menangani aspek mail elektronik, pada beberapa sistem, agent memiliki UID yang sama dengan daemon.
- guest, digunakan bagi para pengunjung untuk mengakses sistem.
- ftp, digunakan untuk akses anonymous FTP.
- uucp, untuk mengatur uucp sistem.
- news, digunakan untuk Usenet news
- lp, digunakan untuk line printer system.
- nobody, yakni user yang tidak memiliki file-file. Terkadang digunakan sebagai default user untuk operasi-operasi kurang openting.

User Identitas (UID)
UID secara historis dibentuk oleh integer-integer 16 bit, yang berarti mereka dapat melakukan range dari 0 hingga 65535. UID 0 dan 9 secara typical digunakan untuk fungsi-fungsi system. UID untuk orang-orang biasanya dimulai dari 20 atau 100. Linux menyimpan mappong antar-username dan UID-UID dalam file /etc/passwd. Masing-masing UID user diletakkan dalam field setelah password-password yang terenkripsi.

Perhatikan contoh isi dari satu record /etc/passwd :

Test:eH5/.mj7NHB3dx:181:100:Test:/home/Test:/bin/ksh

Dari contoh diatas, user anjik dengan UID 181. UID tidak lain adalah informasi aktual yang digunakan sistem operasi untuk mengidentifikasi user-user. Seandainya dua atau beberapa user memiliki UID yang sama, meski mereka memiliki username berbeda dan password berbeda pula. User dengan UID yang sama dapat secara bebas membaca file-file, melakukan penghapusan, mengeksekusi program, mengkill proses-proses yang berjalan.

Linux menyediakan utilitas useradd untuk menambahkan nama pemakai baru ke sistem.
Usage : useradd [-u uid] [-o]] [-g group] [-G group,…]
[-d home] [-s shell] [-c comment] [-m [-k template]]
[-f inactive] [-e expire ] [-p passwd] [-n] [-r] name
useradd –D [-g group] [-b base] [-s shell]
[-f inactive] [-e expire]

-u user-id
-g group-id
-G secondary group
-d direktori awal (HOME), bila tidak diberikan, maka sebagai default
diambil nama pemakai tsb dan ditambahkan ke direktori default
(misalnya /home)

-s shell, /bin/bash dan lainnya

-c comment, info atau keterangan tentang pemakai tersebut

-m direktori HOME akan diciptakan, bila belum ada. Files yang berada
pada direktori /etc/skel akan dicopy untuk menjadi default profile
pemakai tersebut.

-k bersama dengan –m, memberikan nama kerangka (skelet) direktori
yang berbeda dengan skel

-f inactive_days, jumlah hari sebelum account tersebut dibekukan, bila masa
berlaku password telah berakhir.

-e tanggal habis berlaku nama login tersebut

-p encrypted password

Membuat user sederhana :
# useradd test

Membuat user, dengan menyertakan semua parameter dari nilai default, yang dapat dilihat dengan menggunakan option –D:
#useradd –D
GROUP=100
HOME=/home
INACTIVE=1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel

Melihat HOME directory serta file inisialisasi:
# ls –1 /home
total 17
drwx------ 4 test 1024 Nov 27 13:50 test
drwxr-xr-x 6 root root 1024 Nov 27 19:33 ftp
drwx------ 4 test test 1024 Nov 27 22:03 test
drwxr-xr-x 5 root root 1024 Nov 27 19:33 http
drwxr-xr-x 2 root root 12288 Nov 27 19:30 lost+found


# ls –la /home/test
drwx------ 4 test test 1024 Nov 27 22:03 .
drwxr-xr-x 8 root root 1024 Nov 27 22:03 ..
-rw-r--r-- 1 test test 1024 Nov 27 22:03 .bash_logout
-rw-r--r-- 1 test test 1024 Nov 27 22:03 .bash_profile
-rw-r--r-- 1 test test 1024 Nov 27 22:03 .bashrc


File default dapat diganti dengan menggunakan option ke dua yaitu –D :
Ganti HOME default ke direktori /usr :
#useradd –D –b /usr
#useradd –D
GROUP=100
HOME=/usr
INACTIVE=1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel

Mengubah User
# usermod
usage : usermod [-u uid [-o]] [-g group] [-G group,….]
[-d home [-m]] [-s shell] [-c comment] [-l new_name]
[-f inactive] [-e expire] [-p passwd] [-L|-U] name
#userdel
usage : userdel [-r] name
# usermod –g 500 test
# grep test /etc/passwd
test :x:200:500::/home/test:/bin/bash

#userdel –r test
#grep test /etc/passwd

Group Identifiers (GIDs)
Setiap user Linux berada dalam satu atau beberapa group. Sebagaimana halnya account-account user, group terdiri atas groupname dan group identification number (GID).

Nilai-nilai GID juga secara historis memiliki integer 16 bit. Sesuai dengan namanya, group-group Linux digunakan untuk mengelompokkan user-user satu sama lainnya. Sebagaimana username, groupname juga diset oleh administrator sistem saat account-account user dibuat. GID user diletakkan mengikuti UID-nya, perhatikan contoh file /etc/passwd :

test:eH5/.mj7NHB3dx:181:100:Test:/home/Test:/bin/ksh

Dalam contoh diatas, dapat dilihat bahwa GID primer anjik adalah 100. Group memberikan mekanisme penanganan atau batasan-batasan tertentu bagi user-user. Group juga digunakan untuk membentengi akses informasi sensitif dan aplikasi-aplikasi berlisensi khsus untuk user tertentu.

File /etc/group terdiri atas database yang memuat daftar setiap group dalam komputer beserta koresponden GID-nya. Formatnya sama dengan file /etc/passwd. Berikut contoh isi file /etc/group yang mendefinisikan lima group wheel, users,netc, internet, dan bebas :
wheel:*:0:root, test
users:*:100:
netc:*:101:setan, devil
internet:*:102:icha, test, coba, support


Membuat Group
Linux telah menyediakan utilitas administrasi group dengan utilitas groupadd. Sebelum melakukan penambahan group baru sebaiknya dilakukan pengecekan apakah group sudah atau belum.

# groupadd
usage : groupadd [-g gid[-o]] [-r] [-f] group
-g nilai group-id
-o Jika optioan ini dijalankan, maka group-id boleh merupakan duplikasi
dari GID yang sudah ada
-r menambah group sebagaimana bagian dari sistem dengan GID lebih
kecil dari 500.
-f force, akan memaksa groupadd untuk menghentikan proses, jika sudah
ada di /etc/group.

# groupadd myschools
# grep test /etc/group
Bila nomor group tidak diberikan, maka sistem akan memberikannya secara otomatis.

Utilitas groupmod dan groupdel dapat digunakan untuk mengubah parameter group atau menghapusnya dengan groupdel.

# groupmod
usage : groupmod [ -g gid [-o]] [-n name] group

Mengganti group-ID
# groupmod –g 123 mygroup
# grep mygroup /etc/group
mygroup:x:123:

Mengganti group-name
# groupmod –n newgroup mygroup
# grep mygroup /etc/group
# grep newgroup /etc/group
newgroup:x:123

Menghapus group
# groupdel
usage : groupdel group

# groupdel newgroup
# grep newgroup /etc/passwd
Perhatian : Sebelum meghapus group, pastikan lebih dahulu bahwa tidak ada pemakai yang terdaftar dalam group tersebut. Periksa di /etc/passwd.


Super User
Setiap sistem Linux secara default memiliki user spesial dalam file /etc/passwd, yang memiliki UID bernilai 0. User ini dikenal juga dengan superuser dan normalnya diberi username root.

Account root adalah identitas yang digunakan oleh sistem operasi untuk menyelesaikan fungsi-fungsi dasar sistem, seperti logging user-user yang masuk dan keluar, me-record informasi accounting, dan mengaturdevice device input/output.
Dengan mengetikkan su tanpa diikuti username akan memberitahu Linux bahwa sistem diminta untuk mengubah ke dalam superuser. Selanjutnya diminta memasukkan password. Setelah password root diketikkan, maka shell akan berjalan dengan UID 0. Saat menjadi superuser, secara otomatis prompt akan berubah menjadi (#) untuk mengingatkan bahwa user berada dalam status sebagai superuser.

$ /bin/su –
password : *******
[root@tester ~]# who am I
root

Jika menggunakan command su untuk berubah ke user lain saat status sebagai superuser, sistem tidak meminta memasukkan password user bersangkutan.
[root@tester ~]# su test
$ who am I
test

Tidak semua user bisa menggunakan perintah su terhadap user root kecuali user tersebut masuk dalam group wheel dalam /etc/group yang memiliki group ID 0. Agar batasan ini bekerja, entri /etc/group tidak boleh dikosongkan, karena jika sikosongkan, semua user bisa mengubah menjadi superuser.

Menambah user
Menambah user-user dalam Linux meliputi tahapan-tahapan sebagai berikut :
- Eksekusi dan mengedit passwd, shadow, dan file group
- Menset password inisial
- Membuat direktori home user
- Mengcopy file-file start-up default
- Mengubah kepemilikan
- Memerika set up account dengan teliti.

File Password: /etc/passwd
File password /etc/passwd secara umum memuat hal-hal sebagai berikut :
- username
- Password terenkripsi, seringkali disimpan dalam /etc/shadow
- UID, nomor yang unik untuk user
- Default GID, group ID user saat mereka login. Untuk mengubah group dapat digunakan perintah /bin/chgrp

Group dan /etc/group
- memungkinkan user melakukan share file dan resource
- Group dibentuk dengan :
*Secara implisit dengan cukup menaruh nomor baru dalam field keempat pada /etc/passwd
*Secara eksplisit dengan menambah entri /etc/group
- /etc/group dapat memilikibentuk field seperti berikut :
group-name:*:GID:users

Membuat Direktori home
- Tambahkan entri-entri file passwd dan shadow
- Gunakan passwd userid untuk menset passwd user
- Buat direktori home untuk user bersangkutan
$mkdir /home/username

- Copy file-file inisialisasi shell
- Buatlah semua file dimiliki oleh user tersebut
# chown –R username:groupname /home/username

Menguji Account
- Gunakan su – username untuk mengetes sebuah account
- Perintah su (substitusi user) memungkinkan merubah menjadi user lain tanpa perlu menutup login.
- “-“ menunjukkan agar membaca semua file-file inisialisasi user

Menghapus User
- Gunakan passwd –l username untuk me-lock account
# userdel -r test perintah ini akan sekalian menghapus direktori $HOME/user

Senin, 14 Desember 2009

Instalasi Samba Server di Centos 5.2

Instalasi Samba Server di Centos 5.2


Pendahuluan


Samba adalah server yang sangat powerful yang dapat membuat sistem berbasis Unix (seperti Linux) untuk melakukan sharing resource dengan sistem berbasis Windows. Hal ini tentu sangat berguna pada sebuah LAN yang terdiri atas beberapa workstation dengan flatform sistem operasi Linux dan Windows sehingga dapat lebih efisien dengan adanya pembagian resource, seperti file dan printer, untuk dapat digunakan secara bersama-sama. Samba merupakan sebuah software aplikasi buatan Andrew Tridgel dari ANU (Australian National University) dengan mengimplementasikan protokol SMB (Server Message Block) pada sistem operasi Unix. Protokol ini kadang-kadang dapat berlaku sebagai protokol CIFS (Common Internet File Sistem), LanManager, NetBIOS. Protokol SMB ini dapat membuat sebuah komputer dengan sistem operasi Unix menjadi file atau print server menjadi file atau print server atau seperti klien ftp untuk mengakses share SMB baik di Samba server atau di sever lain yang kompatibel seperti Windows NT, mendukung nameserving dan browsing NetBIOS, dan lain-lain.


Mekanisme SMB


Username dan Password


Untuk memahami hubungan antara Linux/Samba/Windows, kita harus mempelajari sistem file, printer, dan user pada kedua operating sistem. Beberapa manajemen pengaturan username dan password :

Linux Password Authentication Module (PAM), akan membuat autentikasi user dengan PDC sehingga kita tetap mempunyai dua user, satu di lokal dan satu lagi di PDC , tapi user hanya perlu menyimpan password hanya dalam sistem window.

Samba sebagai PDC, akan menyimpan login dan password pada sistem Linux. Membuat solusi sendiri dengan Perl, kita dapat membuat sendiri. Hal ini dilakukan dengan menggunakan Winperl dan modul-modul Perl yang memungkinkan pengubahan paa Security Access Manager (SAM), untuk meng-update daftar password PDC. Script Perl pada sisi Linux dapat berkomunikasi dengan script WinPerl untuk menjaga sinkrinisasi account.


Encrypted Password

Sejak Windows NT 4, Windows 98, dan Windows 95, Windows menggunakan password terenkripsi saat berkomunikasi menggunakan PDC dan setiap server yang memerlukan autentikasi (termasuk Linux dan Samba). Algoritma enkripsi Windows berbeda dengan UNIX, sehingga tidak kompatibel. Untuk menangani hal itu, kita dapat melakukan pilihan-pilihan sebagai berikut :

Mengedit Registry pada klien Windows untuk mendisable penggunaan password terenkripsi. Bagian registry yang harus diubah terdapat pada direktori docs paket Samba.


Mengkonfigurasi Samba agar menggunakan password terenkripsi Windows.

Pilihan pertama mempunyai kelebihan dengan tidak adanya pola password yang lebih kompleks. Pada sisi lain, kita harus membuat registry yang tetap pada semua klien. Untuk pilihan kedua sebaliknya, yakni sedikit lebih kompleks pada sisi server, tapi kita tidak usah mengubah bagian klien.


Perbedaan smbd dengan nmbd

Sebenarnya Samba disusun atas dua damon, yatu smbd dan nmbd. Smbd adalah daemon yang secara nyata menangani servis sharing file sistem dan printer untuk klien. Pada saat sebuah klien melakukan autentikasi, smbd akan membuatkan duplikat dirinya, bagian asli akan kembali ke port 139 untuk mendengarkan permintaan baru dan bagian duplikat menangani koneksi terhadap klien. Dulikat ini juga mengubah ID user efektifnya dari root ke user yang terautentikasi. Misalnya, kalau user “user” melakukan autentikasi dengan smbd, duplikat baru akan berjalan dengan permisi “user”, dan bukannya permisi “root”). Duplikat ini akan berada di memory selama masih terkoneksi dengan klien.

Daemon nmbd bertanggung-jawab untuk menangani permintaan server name NetBIOS. Ia akan mendengarkan port 137, tidak seperti smbd, nmbd tidak membuat contoh dirinya untuk menangani setiap pertanyaan. Kedua daemon itu harus dijalankan agar Samba bekerja dengan baik.


Instalasi Paket Samba Server

kita akan coba untuk menginstall paket : samba-3.3.2.tar.gz. Pastikan file source ini sudah didownload dan diletakkan di direktori /usr/local/src (atau direktori lainnya).


Instalasi Dalam Bentuk Tarball

Instalasi dalam bentuk tarball adalah instalasi dengan source dalam bentuk file berekstensi tar.gz. Instalasi ini hanya bisa dilakukan dengan account root. Berikut adalah langkah-langkah instalasinya :

Masukkan ke direktori tempat diletakkannya source Samba :

# cd /usr/local/src

Kemudian ekstrak file tersebut dengan perintah :

# tar –zxvf samba-3.3.2.tar.gz

Setelah diekstark akan terbentuk direktori samba-3.3.2, masuklah ke direktori tersebut, dan di sana akan terdapat direktori source, docs , dan sebagainya.

# cd samba-3.3.2/source

Dalam konfigurasi ini, kita dapat menambahkan beberapa option, misalnya kita akan menambahkan option sebagai berikut :


Option Deskripsi

--with-pam Agar Samba dapat menggunakan Password Authentication Module (PAM).

--with-mmap Agar mendukung MMAP untuk meningkatkan performansi Samba.

Contoh :

# ./autogen.sh

# ./configure –-with-smbmount –-with-pam –with-mmap

Kemudian install Samba dengan mengetikkan perintah make lalu make install:

# make all

# make install

# make installbin

# make installman

# make revert

Samba akan terinstall di direktori /usr/local/samba. Setelah perintah instalasi di atas dieksekusi, akan terbentuk direktori bin yang berisi sejumlah file binary yang berfungsi seperti untuk mengontrol Samba server seperti smbd, nmbd, dan smbclient, dan lain-lain.

# install –m 755 script /mksmbpasswd.sh /usr/bin/

Perintah ini akan menginstall script “mksmbpasswd.sh” pada direktori “/usr/bin/”. Script ini diperlukan untuk mensetup user Samba diijinkan terkoneksi ke server via file “smbpasswd”.


Konfigurasi Samba Server

Dalam membuat konfigurasi Samba server ini sangat bergantung pada kebutuhan dan arsitektur dari jaringan komputer kita. Misalkan Samba server ini bisa dikonfigurasikan hanya terkoneksi satu klien atau bahkan terkoneksi dengan 1000 klien. menjalankan Samba server, dibutuhkan file-file berikut ini dan harus dibuat atau dikopi pada direktori-direktori yang cocok pada server kita.


Konfigurasi file “smb.conf”

File konfigurasi utama untuk Samba server ini adalah “/usr/local/samba/lib/smb.conf”, dimana kita dapat menentukan direktori yang ingin kita akses dari komputer Windows, IP address mana yang diijinkan, dsb. Pada file ini juga terdapat banyak sekali option (pilihan). Untuk informasi lebih lanjut tentang berbagai setting dan parameter dapat dilihat di dokumentasi Samba.

Konfigurasi yang akan kita bahas di bawah adalah file konfigurasi minimal Samba yang mendukung password terenkripsi. Kita harus terlebih dahulu mengkopikan file konfigurasi default lalu mengeditnya sesuai dengan yang kita inginkan :

# cd /usr/local/samba/

# cp smb.conf.default /usr/local/samba/lib

# cd /usr/local/samba/lib

# mv smb.conf.default smb.conf

# vi smb.conf


contoh konfigurasi smb.conf :

# Global parameters

[global]

workgroup = server88

netbios name = ramayana_r88

server string =

##interfaces = 172.19.88.250, 127.0.0.1

##interfaces = 172.16.1.37, 127.0.0.1

interfaces = 172.19.8.37, 127.0.0.1

##hosts allow = 172.19.88.0/255.255.25.0

#hosts allow = 172.19.88.0/255.255.25.0

#hosts deny = 0.0.0.0

socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192

[admtoko]

comment = Bagian Administrasi

path = /smb/admtoko

valid users = @admtoko,@kasir

admin users = @edp

read only = no

follow symlinks = yes

map archive = no

create mask = 0775

directory mask = 0775

force create mode = 0775

force directory mode = 0775

vfs objects = recycle

recycle:keeptree = yes

recycle:touch = yes

recycle:versions = no

recycle:exclude = *.tmp,*.temp

recycle:exclude_dir = /data/sos, /scanner

[edp]

comment = Bagian EDP

path = /smb/edp

valid users = @edp

read only = no

create mode = 0775

directory mode = 0775

create mask = 0775

directory mask = 0777

vfs objects = recycle

recycle:keeptree = yes

recycle:touch = yes


membuat user samba

# smbpasswd –a teguh.ambar

New SMB password:

Retype new SMB password:

Added user teguh.ambar

Password changed for user teguh.ambar

Kemudian ubahlah setting permisi file “smbpasswd” ini agar hanya bisa dibaca dan ditulisi oleh account “root” :

# chmod 600 /etc/smbpasswd

Untuk memeriksa kesalahan dalam penulisan file “smb.conf”, lakukan perintah ini :

# testparm

Untuk menjalankan dan menghentikan daemon Samba, nmbd dan smbd secara otomatis kita dapat menjalankan script file “/etc/rc.d/init.d/smb”. Pastikan bahwa file ini mempunyai permisi yang hanya bisa dibaca, ditulis, dan dieksekusi oleh user “root”.

# chmod 700 /etc/rc.d/init.d/smb

Lalu buat simbolik link rc.d pada Samba dengan perintah :

# chkconfig –-add smb

Agar sript Samba secara otomatis menjalankan daemon nmbd dan smbd saat sistem dihidupkan (atau direboot) lakukan perintah berikut ini :

# chkconfig -–level 345 smb on

Menjalankan Samba

Sebelum menjalankan Samba kita harus membuat direktori seperti yang sudah didefinisikan pada file Makefile. Hal ini karena direktori ini tidk secara otomatis dibuat saat mengeksekusi perintah make install.

# mkdir /usr/local/samba/var

Samba dapat dijalankan dengan dua macam cara. Pertama dijalankan sebagai daemon dan kedua menjalankannya dari inetd. Samba yang dijalankan sebagai daemon akan sedikit lebih cepat dalam melayani permintaan client jika dibandingkan dengan Samba yang dijalankan dari inetd. Biasanya berbagai distribusi Linux sudah mempunyai script untuk menstart dan menstop servis Samba.

Untuk menjalankan Samba kita harus menjalankan daemon smbd dan nmbd.

Lakukan perintah berikut ini :

# /usr/local/samba/sbin/smbd –D

# /usr/local/samba/sbin/nmbd –D

Agar Samba selalu dijalankan setiap kali Linux melakukan booting, kita dapat menambahkan baris-baris di atas pada file /etc/rc.d/rc.local :

# vi /etc/rc.d/rc.local

#samba selalu start saat booting

/usr/local/samba/sbin/smbd –D

/usr/local/samba/sbin/nmbd –D


Quota or Samba Quota


PengQuotaan disk pada samba kali ini dilakukan pada direktori samba sendiri, penggunaan Quota pada samba dilakukan untuk menghindari over limit pada direktori melalui user/grup.

Mengecek quota tools :

Contoh :

# if [ -x /sbin/quotacheck ]

> then

> echo "Checking quotas. This may take some time."

> /sbin/quotacheck -avug

> echo " Done."

> fi

Checking quotas. This may take some time.

quotacheck: Scanning /dev/hda8 [/smb]

quotacheck: Scanning /dev/hda8 [/smb] done

quotacheck: Checked 3 directories and 7 files

Done.

# if [ -x /sbin/quotaon ]

> then

> echo "Turning on quota."

> /sbin/quotaon -avug

> fi

Turning on quota.

/dev/hda8 [/smb]: group quotas turned on

/dev/hda8 [/smb]: user quotas turned on

Edit file /etc/fstab.

LABEL=/ / ext3 defaults 1 1

LABEL=/smb /smb ext3 default,grpquota,usrquota, 0 2

LABEL=/home /home ext3 defaults 1 2

LABEL=/var /var ext3 defaults 1 2

LABEL=/usr /usr ext3 defaults 1 2

LABEL=/boot1 /boot ext3 defaults 1 2

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

LABEL=SWAP-hda7 swap swap defaults 0 0

di table /smb tambahkan grpquota untuk membuat quota pada grup, tambahkan usrquota jika ingin membuat quota pada users.

Tambahkan pada crontab.


0 3 * * 0 root /sbin/quotacheck -avug

lakukan restart komputer untuk mengaktifkan quota.


Membuat quota per user/grup bisa dilakukan manual ataupun melalui webmin, tapi dikarenakan saya tidak tau berapa pembagian-pembagian per MB, so, akhirnya using automatis aja deh lewat webmin..hehehe

untuk melihat informasi quota dari user/grup dengan mengetik repquota.

# repquota -a

*** Report for user quotas on device /dev/hda8

Block grace time: 7days; Inode grace time: 7days

Block limits File limits

User used soft hard grace used soft hard grace

----------------------------------------------------------------------

root -- 147620 0 0 7 0 0

************

My Project

************

Jumat, 04 Desember 2009

Bisnis Oriflame secara Online


Oriflame dan Bisnis Online

Bisnis Oriflame sekarang mewabah diseluruh pelosok Indonesia. Baik penjualan secara OFFLINE maupun secara Oriflame Online. Yuk Jangan ketinggalan untuk mengikuti bisnis yang menarik ini dengan produk-Products Cosmetic yang unggulan.

Fun! – Menyenangkan!

Tentukan sendiri waktu Anda! Bagi Anda yang menginginkan pekerjaan tanpa terikat oleh waktu, Oriflame bisa menjadi pilihan Anda. Apakah Anda seorang karyawan / ibu rumah tangga / mahasiswa(i), Anda dapat menjalankan bisnis Products Cosmetic tanpa meninggalkan pekerjaan Anda. Cukup luangkan waktu 1-2 jam sehari untuk memperkenalkan produk Oriflame. Bahkan tidak jarang konsultan Oriflame yang meninggalkan pekerjaan utamanya dan menjadikan bisnis Oriflame Cosmetic menjadi pekerjaan utama. Paruh waktu atau penuh waktu, Anda yang menentukan.

Work at home. Kini di negara-negara maju banyak ibu rumah tangga yang menjalankan bisnis dari rumah sambil mengurus keluarga. Success Team Online atau Oriflame Online memberikan kemudahan untuk menjalankan bisnis dari rumah. Anda hanya memerlukan koneksi internet dari rumah. Dengan melakukan registrasi (gratis), Anda akan mendapatkan website replica pribadi. Gunakan alamat website Anda untuk mempromosikan bisnis Oriflame Products Anda. Dari website tersebut, Anda akan mendapatkan pelanggan serta downline dari internet.

Spillover & Randomiser. Kami menerapkan sistem Spillover dan randomiser, dimana seseorang yang mendaftar Oriflame Products Online, maksimum memiliki 2 kaki. Apabila seseorang sudah memiliki 2 downline langsung, maka downline berikutnya akan di-spillover / dilimpahkan kepada downline di bawahnya yang masih belum mempunyai downline. Jadi Anda pun berkesempatan untuk memperoleh downline dari limpahan upline Anda. Siapapun dipastikan akan mendapat downline.

Easy! – Mudah!

Bisnis di Oriflame Cosmetic sangatlah mudah. Anda tidak perlu ahli di bidang kosmetika dan tidak perlu pengalaman menjual. Yang perlu Anda lakukan adalah menunjukkan katalog!

Anda akan memperoleh katalog Oriflame setiap bulannya. Katalog Oriflame Products setebal 88 halaman full colour berisi lebih dari 550 jenis produk mulai dari haircare, skincare, makeup, bodycare, fragrance (wewangian – baik untuk pria maupun wanita), nailcare, footcare, babycare dan lain sebagainya. Produk meliputi dari perawatan ujung rambut hingga ujung kaki, mulai dari produk bayi hingga produk dewasa dan produk untuk pria maupun wanita! Dalam setahun, Oriflame meluncurkan 200 produk baru.

Siapapun dapat menjalankan bisnis ini. Yang perlu Anda lakukan hanyalah “menunjukkan katalog”.


Hanya Dengan Rp 39.900,-, Anda Sudah Bisa Berbisnis & Sukses Disini!

Di Era Digital ini, apapun latar belakang Anda (Mahasiswa, Karyawan, Ibu Rumah Tangga, atau Pengusaha Konvensional), bisnis Anda akan Sukses dan Stabil dengan memanfaatkan INTERNET. Hebatnya, di bisnis ini anda tidak perlu susah payah presenstasi kemana mana, tetap di rumah, kantor atau kampus.

Bisnis Oriflame Secara Online:

  1. Investasi sangat kecil baik uang (hanya Rp 39.900,-), waktu dan tenaga, serta resiko yang boleh dibilang kecil.

  1. Training berupa E-Book, Website dan Tools Online secara GRATIS dan SIMPEL!

  1. Sederhana. Tidak perlu memikirkan Distribusi Barang, Transportasi, Sewa Tempat dan karyawan

  1. Penghasilan bulanan jutaan & berbagai bonus lainnya!

Informasi Bisnis Oriflame Online :

085692909050

http://dbc.ariencot.info

http://promo.ariencot.info

email : ariewidiningsih@yahoo.com

YM : ariewidianingsih

Selasa, 14 Juli 2009

Membuat authentikasi user Login di Squid

Ini adalah sedikit dokumentasi ketika saya mengconfigure squid (Proxy Server) agar ketika si client mau menggunakan proxy untuk connect ke internet, ia harus masukkan username dan password, jadi… yang tidak bisa meng-input username dan password dengan benar, otomatis ia tidak bisa connect ke internet.

Teknik ini saya rasa adalah teknik yg paling pas diterpakan, jika dalam sebuah network ada user yang “tidak mendapatkan hak” untuk akses internet, dan ada juga user yang “mendapatkan hak” untuk akses internet.

Langkah-langkahnya adalah sebagai berikut :

Install Squid, jangan lupa untuk mengenable kan options:

–enable-auth
–enable-basic-auth-helpers

Buatlah direktory, dimana direktori ini akan berfungsi sebagai tempat penyimpanan username dan password.

mkdir /usr/lib/squid/ncsa

Buatlah username dan password yang nantinya akan di gunakan untuk authentifikasi login ke squid proxy

htpasswd -c /usr/lib/squid/ncsa/login.auth test
htpasswd /usr/lib/squid/ncsa/login.auth penchot

Baris pertama berarti : membuat file “login.auth” (tempat menaruh username dan password) oleh user “test”
baris kedua berarti : menambahkan username penchot ke dalam login.auth

backup file squid.conf nya terlebih dahulu untuk menjaga hal2 yg tak diinginkan..!!!
# cp /etc/squid/squid.conf /etc/squid/squid.conf.ori

# vi /etc/squid/squid.conf

Edit squid.conf

Tambahkan :

auth_param basic program /usr/lib/squid/ncsa_auth /usr/lib/squid/ncsa/dani.auth
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl ncsa_users proxy_auth REQUIRED

http_access allow ncsa_users (Letakkan baris ini sebelum http_access deny all)

Sebagai contoh, ini adalah squid.conf yang saya pakai:

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl lan src 192.168.0.0/255.255.255.0 #komp lan

auth_param basic program /usr/lib/squid/ncsa_auth /usr/lib/squid/ncsa/login.auth
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl ncsa_users proxy_auth REQUIRED

acl to_localhost dst 127.0.0.0/8
acl PURGE method PURGE
acl SSL_ports port 443 563 10000
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl magic url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav
acl CONNECT method CONNECT

http_access allow manager lan
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow PURGE localhost
http_access deny PURGE
http_access allow localhost
http_access allow ncsa_users
http_access allow lan
http_access deny all

kemudian coba jalankan :

squid -k reconfigure

Jika tidak menemukan error, itu berarti konfigurasi squid nya sudah benar, sekarang tinggal test menggunakan browser.
lakukan setting di browsernya agar menggunakan proxy yang tadi kita set, kemudian coba buka salah satu web, misalkan www.google.com, jika muncul kolom username dan password, itu berarti setting auth kita sukses.



Selanjutnya masukkan “username” dan “password” yang kita telah buat tadi, misal:
Username : test
Password : ******

jika kemudian www.google.com nya terbuka, maka itu berarti secara keseluruhan setting yang kita lakukan telah sukses.
Pemprograman Bash Shell
di Linux untuk Pemula

1. Pendahuluan

Apa itu shell ? shell adalah program (penterjemah perintah) yang menjembatani user dengan sistem operasi dalam hal ini kernel (inti sistem operasi), umumnya shell menyediakan prompt sebagai user interface, tempat dimana user mengetikkan perintah-perintah yang diinginkan baik berupa perintah internal shell (internal command), ataupun perintah eksekusi suatu file progam (eksternal command), selain itu shell memungkinkan user menyusun sekumpulan perintah pada sebuah atau beberapa file untuk dieksekusi sebagai program.

Macam - macam shell?

Tidak seperti sistem operasi lain yang hanya menyediakan satu atau 2 shell, sistem operasi dari keluarga unix misalnya linux sampai saat ini dilengkapi oleh banyak shell dengan kumpulan perintah yang sangat banyak, sehingga memungkinkan pemakai memilih shell mana yang paling baik untuk membantu menyelesaikan pekerjaannya, atau dapat pula berpindah-pindah dari shell yang satu ke shell yang lain dengan mudah, beberapa shell yang ada di linux antara lain:
Bourne shell(sh),
C shell(csh),
Korn shell(ksh),
Bourne again shell(bash),
dsb.

Masing - masing shell mempunyai kelebihan dan kekurangan yang mungkin lebih didasarkan pada kebutuhan pemakai yang makin hari makin meningkat, untuk dokumentasi ini shell yang digunakan adalah bash shell dari GNU, yang merupakan pengembangan dari Bourne shell dan mengambil beberapa feature (keistimewaan) dari C shell serta Korn shell, Bash shell merupakan shell yang cukup banyak digunakan pemakai linux karena kemudahan serta banyaknya fasilitas perintah yang disediakan.versi bash shell yang saya gunakan adalah 2.04

[fajar@linux$]echo $BASH_VERSION
bash 2.04.12(1)-release

Mungkin saat anda membaca dokumentasi ini versi terbaru dari bash sudah dirilis dengan penambahan feature yang lain.

2. Pemrograman Shell ?

Yaitu menyusun atau mengelompokkan beberapa perintah shell (internal atupun eksternal command) menjadi kumpulan perintah yang melakukan tugas tertentu sesuai tujuan penyusunnya. Kelebihan shell di linux dibanding sistem operasi lain adalah bahwa shell di linux memungkinkan kita untuk menyusun serangkaian perintah seperti halnya bahasa pemrograman (interpreter language), melakukan proses I/O, menyeleksi kondisi, looping, membuat fungsi, dsb. adalah proses - proses yang umumnya dilakukan oleh suatu bahasa pemrograman, jadi dengan shell di linux kita dapat membuat program seperti halnya bahasa pemrograman, untuk pemrograman shell pemakai unix atau linux menyebutnya sebagai script shell.

3. Kebutuhan Dasar

Sebelum mempelajari pemrograman Bash shell di linux sebaiknya anda telah mengetahui dan menggunakan perintah - perintah dasar shell baik itu internal command yang telah disediakan shell maupun eksternal command atau utility, seperti
cd, pwd, times, alias, umask, exit, logout, fg, bg, ls, mkdir, rmdir, mv, cp, rm, clear, ...
utilitas seperti cat, cut, paste, chmod, lpr,...
redirection (cara mengirim output ke file atau menerima input dari file), menggunakan operator redirect >, >>, <, <<, contohnya: ls > data
hasil ls dikirim ke file data, jika file belum ada akan dibuat tetapi jika sudah ada isinya akan ditimpa.
ls >> data
hampir sama, bedanya jika file sudah ada maka isinya akan ditambah di akhir file.
cat < sort=""> databaru

Wildcard dengan karakter *, ?, [ ], contohnya:
ls i*
tampilkan semua file yang dimulai dengan i
ls i?i
tampilkan file yang dimulai dengan i, kemudian sembarang karakter tunggal, dan diakhiri dengan i
ls [ab]*
tampilkan file yang dimulai dengan salah satu karakter a atau b

4. Simple Bash Script

Langkah awal sebaiknya periksa dulu shell aktif anda, gunakan perintah ps (report process status)
[fajar@linux$]ps
PID TTY TIME CMD
219 tty1 00:00:00 bash
301 tty1 00:00:00 ps

bash adalah shell aktif di system saya, jika disystem anda berbeda misalnya csh atau ksh ubahlah dengan perintah change shell

[fajar@linux$]chsh
Password:
New shell [/bin/csh]:/bin/bash
Shell changed

atau dengan mengetikkan bash
[fajar@linux$]bash

sekarang coba anda ketikkan perintah dibawah ini pada prompt shell
echo "Script shell pertamaku di linux"

[fajar@linux$]echo "Script shell pertamaku di linux"
Script shell pertamaku di linux

string yang diapit tanda kutip ganda (double quoted) akan ditampilkan pada layar anda, echo adalah statement (perintah) built-in bash yang berfungsi menampilkan informasi ke standard output yang defaultnya adalah layar. jika diinginkan mengulangi proses tersebut, anda akan mengetikkan kembali perintah tadi, tapi dengan fasilitas history cukup menggunakan tombol panah kita sudah dapat mengulangi perintah tersebut, bagaimana jika berupa kumpulan perintah yang cukup banyak, tentunya dengan fasilitas hirtory kita akan kerepotan juga mengulangi perintah yang diinginkan apalagi jika selang beberapa waktu mungkin perintah-perintah tadi sudah tertimpa oleh perintah lain karena history mempunyai kapasitas penyimpanan yang ditentukan. untuk itulah sebaiknya perintah-perintah tsb disimpan ke sebuah file yang dapat kita panggil kapanpun diinginkan.
coba ikuti langkah - langkah berikut:

1.Masuk ke editor anda, apakah memakai vi,pico,emacs,dsb...
2.ketikkan perintah berikut
#!/bin/bash
echo "Hello, apa khabar"
3.simpan dengan nama file tes
4.ubah permission file tes menggunakan chmod
[fajar@linux$]chmod 755 tes
5.jalankan
[fajar@linux$]./tes

kapan saja anda mau mengeksekusinya tinggal memanggil file tes tersebut, jika diinginkan mengeset direktory kerja anda sehingga terdaftar pada search path ketikkan perintah berikut
PATH=$PATH:.
setelah itu script diatas dapat dijalankan dengan cara
[fajar@linux$]tes
Hello, apa khabar

tanda #! pada /bin/bash dalam script tes adalah perintah yang diterjemahkan ke kernel linux untuk mengeksekusi path yang disertakan dalam hal ini program bash pada direktory /bin, sebenarnya tanpa mengikutkan baris tersebut anda tetap dapat mengeksekusi script bash, dengan catatan bash adalah shell aktif. atau dengan mengetikkan bash pada prompt shell.

[fajar@linux$]bash tes
tentunya cara ini kurang efisien, menyertakan path program bash diawal script kemudian merubah permission file sehingga dapat anda execusi merupakan cara yang paling efisien.
Sekarang coba kita membuat script shell yang menampilkan informasi berikut:
1.Waktu system
2.Info tentang anda
3.jumlah pemakai yang sedang login di system
contoh scriptnya:
#!/bin/bash
#myinfo

#membersihkan tampilan layar
clear

#menampilkan informasi
echo -n "Waktu system :"; date
echo -n "Anda :"; whoami
echo -n "Banyak pemakai :"; who | wc -l

sebelum dijalankan jangan lupa untuk merubah permission file myinfo sehingga dapat dieksekusi oleh anda

[fajar@linux$]chmod 755 myinfo
[fajar@linux$]./myinfo
Waktu system : Sat Nov 25 22:57:15 BORT 2001
Anda : fajar
Banyak pemakai : 2

tentunya layout diatas akan disesuaikan dengan system yang anda gunakan statement echo dengan opsi -n akan membuat posisi kursor untuk tidak berpindah ke baris baru karena secara default statement echo akan mengakhiri proses pencetakan ke standar output dengan karakter baris baru (newline), anda boleh mencoba tanpa menggunakan opsi -n, dan lihat perbedaannya. opsi lain yang dapat digunakan adalah -e (enable), memungkinkan penggunaan backslash karakter atau karakter sekuen seperti pada bahasa C atau perl, misalkan :
echo -e "\abunyikan bell"
jika dijalankan akan mengeluarkan bunyi bell, informasi opsi pada statement echo dan backslash karakter selengkapnya dapat dilihat via man di prompt shell.
[fajar@linux$]man echo

Pemakaian Variabel
Secara sederhana variabel adalah pengenal (identifier) berupa satuan dasar penyimpanan yang isi atau nilainya sewaktu-waktu dapat berubah baik oleh eksekusi program (runtime program) ataupun proses lain yang dilakukan sistem operasi. dalam dokumentasi ini saya membagi variabel menjadi 3 kategori:

1.Environment Variable
2.Positional Parameter
3.User Defined Variable
5.1. Environment Variable

atau variabel lingkungan yang digunakan khusus oleh shell atau system linux kita untuk proses kerja system seperti variabel PS1, PS2, HOME, PATH, USER, SHELL,dsb...jika digunakan akan berdampak pada system, misalkan variabel PS1 yang digunakan untuk mengeset prompt shell pertama yaitu prompt tempat anda mengetikkan perintah - perintah shell (defaultnya "\s-\v\$"), PS2 untuk prompt pelengkap perintah, prompt ini akan ditampilkan jika perintah yang dimasukkan dianggap belum lengkap oleh shell (defaultnya ">"). anda dapat mengeset PS1 dan PS2 seperti berikut.

simpan dahulu isi PS1 asli system anda, sehingga nanti dapat dengan mudah dikembalikan
[fajar@linux$]PS1LAMA=$PS1

sekarang masukkan string yang diinginkan pada variabel PS1
[fajar@linux$]PS1="Hi ini Promptku!"
Hi ini Promptku!PS2="Lengkapi dong ? "

maka prompt pertama dan kedua akan berubah, untuk mengembalikan PS1 anda ke prompt semula ketikkan perintah

[fajar@linux$]PS1=$PS1LAMA

Jika anda ingin mengkonfigurasi prompt shell, bash telah menyediakan beberapa backslash karakter diantaranya adalah:
\a
ASCII bell character (07)
\d
date dengan format "Weekday Month Date" (misalnya "Tue May 26")
\e
ASCII escape character (033)
\H
hostname (namahost)
\n
newline (karakter baru)
\w
Direktory aktif
\t
time dalam 24 jam dengan format HH:MM:SS
dll
man bash:-)
contoh pemakaiannya:
[fajar@linux$]PS1="[\t][\u@\h:\w]\$"

agar prompt shell hasil konfigurasi anda dapat tetap berlaku (permanen) sisipkan pada file .bashrc atau .profile

Positional Parameter

atau parameter posisi yaitu variabel yang digunakan shell untuk menampung argumen yang diberikan terhadap shell baik berupa argumen waktu sebuah file dijalankan atau argumen yang dikirim ke subrutin. variabel yang dimaksud adalah 1,2,3,dst..lebih jelasnya lihat contoh script berikut :
#!/bin/bash
#argumen1

echo $1 adalah salah satu $2 populer di $3

Hasilnya
[fajar@linux$]./argumen1 bash shell linux
bash adalah salah satu shell populer di linux

ada 3 argumen yang disertakan pada script argumen1 yaitu bash, shell, linux, masing2 argumen akan disimpan pada variabel 1,2,3 sesuai posisinya. variabel spesial lain yang dapat digunakan diperlihatkan pada script berikut:
#!/bin/bash
#argumen2

clear
echo "Nama script anda : $0";
echo "Banyak argumen : $#";
echo "Argumennya adalah: $*";

Hasilnya:
[fajar@linux$]./argumen 1 2 3 empat
Nama script anda : ./argumen
Banyak argumen : 4
Argumennya adalah : 1 2 3 empat

User Defined Variable
atau variabel yang didefinisikan sendiri oleh pembuat script sesuai dengan kebutuhannya, beberapa hal yang perlu diperhatikan dalam mendefenisikan variabel adalah:
dimulai dengan huruf atau underscore
hindari pemakaian spesial karakter seperti *,$,#,dll...
bash bersifat case sensitive, maksudnya membedakan huruf besar dan kecil, a berbeda dengan A, nama berbeda dengan Nama,NaMa,dsb..
untuk mengeset nilai variabel gunakan operator assignment (pemberi nilai)"=", contohnya :
myos="linux" #double-quoted
nama='pinguin' #single-quoted
hasil=`ls -l`; #back-quoted
angka=12

kalau anda perhatikan ada 3 tanda kutip yang kita gunakan untuk memberikan nilai string ke suatu variabel, adapun perbedaannya adalah:
dengan kutip ganda (double-quoted), bash mengizinkan kita untuk menyisipkan variabel di dalamnya. contohnya:

#!/bin/bash

nama="pinguin"
kata="Hi $nama, apa khabarmu" #menyisipkan variabel nama
echo $kata;
Hasilnya:
Hi pinguin, apa khabarmu
dengan kutip tunggal (single-quoted), akan ditampilkan apa adanya. contohnya:
#!/bin/bash

nama="pinguin"
kata='Hi $nama, apa khabarmu' #menyisipkan variabel nama
echo $kata;

Hasilnya:
Hi $nama, apa khabarmu

dengan kutip terbalik (double-quoted), bash menerjemahkan sebagai perintah yang akan dieksekusi, contohnya:
#!/bin/bash

hapus=`clear`;
isi=`ls -l`; #hasil dari perintah ls -l disimpan di variabel isi

#hapus layar
echo $hapus

#ls -l
echo $isi;

Hasilnya: silahkan dicoba sendiri
Untuk lebih jelasnya lihat contoh berikut:

#!/bin/bash
#varuse

nama="fajar"
OS='linux'
distro="macam-macam, bisa slackware,redhat,mandrake,debian,suse,dll"
pc=1
hasil=`ls -l $0`

clear
echo -e "Hi $nama,\npake $OS\nDistribusi, $distro\nkomputernya, $pc buah"
echo "Hasil ls -l $0 adalah =$hasil"

Hasilnya:
[fajar@linux$]./varuse
Hi fajar,
pake linux Distribusi, macam-macam, bisa slackware,redhat,mandrake,debian,suse,dll
komputernya, 1 buah
Hasil ls -l ./varuse adalah -rwxr-xr-x 1 fajar users 299 Nov 21 06:24 ./varuse

untuk operasi matematika ada 3 cara yang dapat anda gunakan, dengan statement builtin let atau expr atau perintah subtitusi seperti contoh berikut:
#!/bin/bash
#mat1

a=10
b=5
#memakai let
let jumlah=$a+$b
let kurang=$a-$b
let kali=$a*$b

#memakai expr
bagi=`expr $a / $b`

#memakai perintah subtitusi $((ekspresi))
modul =$(($a%$b)) #sisa pembagian

echo "$a+$b=$jumlah"
echo "$a-$b=$kurang"
echo "$a*$b=$kali"
echo "$a/$b=$bagi"
echo "$a%$b=$mod"

Hasilnya:
[fajar@linux$]./mat1
10+5=15
10-5=5
10*5=50
10/5=2
10%5=0

fungsi expr begitu berdaya guna baik untuk operasi matematika ataupun string contohnya:
[fajar@linux$]mystr="linux"
[fajar@linux$]expr length $mystr
5

Mungkin anda bertanya - tanya, apakah bisa variabel yang akan digunakan dideklarasikan secara eksplisit dengan tipe data tertentu?, mungkin seperti C atau pascal, untuk hal ini oleh Bash disediakan statement declare dengan opsi -i hanya untuk data integer (bilangan bulat). Contohnya:
#!/bin/bash

declare -i angka
angka=100;
echo $angka;

apabila variabel yang dideklarasikan menggunakan declare -iternyata anda beri nilai string (karakter), maka Bash akan mengubahnya ke nilai 0, tetapi jika anda tidak menggunakannya maka dianggap sebagai string.

Simple I/O
I/O merupakan hal yang mendasar dari kerja komputer karena kapasitas inilah yang membuat komputer begitu berdayaguna. I/O yang dimaksud adalah device yang menangani masukan dan keluaran, baik itu berupa keyboard, floppy, layar monitor,dsb. sebenarnya kita telah menggunakan proses I/O ini pada contoh -contoh diatas seperti statement echo yang menampilkan teks atau informasi ke layar, atau operasi redirect ke ke file. selain echo, bash menyediakan perintah builtin printf untuk mengalihkan keluaran ke output standard, baik ke layar ataupun ke file dengan format tertentu, mirip statement printf kepunyaan bahasa C atau perl. berikut contohnya:

Output dengan printf
#!/bin/bash
#pr1

url="pemula.linux.or.id";
angka=32;

printf "Hi, Pake printf ala C\n\t\a di bash\n";
printf "My url %s\n %d decimal = %o octal\n" $url $angka $angka;
printf "%d decimal dalam float = %.2f\n" $angka $angka

Hasilnya:
[fajar@linux$]./pr1
Hi, Pake printf ala C
di bash
My url pemula.linux.or.id
32 decimal = 40 octal
32 decimal dalam float = 32.00

untuk menggunakan format kontrol sertakan simbol %, bash akan mensubtitusikan format tsb dengan isi variabel yang berada di posisi kanan sesuai dengan urutannya jika lebih dari satu variabel, \n \t \a adalah karakter sekuen lepas newline,tab, dan bell,
Format control
keterangan
%d
untuk format data integer
%o
octal
%f
float atau decimal
%x
Hexadecimal
pada script diatas %.2f akan mencetak 2 angka dibelakang koma, defaultnya 6 angka, informasi lebih lanjut dapat dilihat via man printf

Input dengan read
Setelah echo dan printf untuk proses output telah anda ketahui, sekarang kita menggunakan statement read yang cukup ampuh untuk membaca atau menerima masukan dari input standar
syntax :
read -opsi [nama_variabel...]
berikut contoh scriptnya:
#!/bin/bash
#rd1

echo -n "Nama anda :"
read nama;

echo "Hi $nama, apa khabarmu";
echo "Pesan dan kesan :";
read
echo "kata $nama, $REPLY";

Hasilnya:
[fajar@linux$]./rd1
Nama anda : pinguin
Hi pinguin, apa khabarmu
Pesan & kesan :
pake linux pasti asyk - asyk aja
kata pinguin, pake linux pasti asyk - asyk aja

jika nama_variabel tidak disertakan, maka data yang diinput akan disimpan di variabel REPLY contoh lain read menggunakan opsi
-t(TIMEOUT), -p (PROMPT), -s(SILENT), -n (NCHAR) dan -d(DELIM)
#!/bin/bash

read -p "User Name : " user
echo -e "Password 10 karakter,\njika dalam 6 second tidak dimasukkan pengisian password diakhiri"
read -s -n 10 -t 6 pass
echo "kesan anda selama pake linux, _underscore=>selesai"
read -d _ kesan

echo "User = $user"
echo "Password = $pass"
echo "Kesan selama pake linux = $kesan"

Hasilnya: silahkan dicoba sendiri :-)

Opsi
Keterangan
-p memungkinkan kita membuat prompt sebagai informasi pengisian
-s membuat input yang dimasukkan tidak di echo ke layar (seperti layaknya password di linux)
-n menentukan banyak karakter yang diinput
-d menentukan karakter pembatas masukan informasi secara lengkap lihat man bash

Output dengan konstanta ANSI

Pengaturan Warna
Untuk pewarnaan tampilan dilayar anda dapat menggunakan konstanta ANSI (salah satu badan nasional amerika yang mengurus standarisasi).
syntaxnya:
\033[warnam
Dimana:
m menandakan setting color
contohnya:
[fajar@linux$]echo -e "\033[31m HELLO\033[0m"
HELLO

konstanta 31m adalah warna merah dan 0m untuk mengembalikan ke warna normal (none), tentunya konstanta warna ansi ini dapat dimasukkan ke variabel PS1 untuk mengatur tampilan prompt shell anda, contohnya:
[fajar@linux$]PS1="\033[34m"
[fajar@linux$]
berikut daftar warna yang dapat anda gunakan:
foreground
None 0m
Black 0;30 Dark Gray 1;30
Red 0;31 Light Red 1;31
Green 0;32 Light Green 1;32
Brown 0;33 Yellow 1;33
Blue 0;34 Light Blue 1;34
Purple 0;35 Light Purple 1;35
Cyan 0;36 Light Cyan 1;36
Light Gray 0;37 White 1;37
background
dimulai dengan 40 untuk BLACK,41 RED,dst
lain-lain
4 underscore,5 blink, 7 inverse
tentunya untuk mendapatkan tampilan yang menarik anda dapat menggabungkannya antara foreground dan background

[fajar@linux$]echo -e "\033[31;1;33m Bash and ansi color\033[0m"
Bash and ansi color

Pengaturan posisi kursor
sedangkan untuk penempatan posisi kursor, dapat digunakan salah satu cara dibawah.
Menentukan posisi baris dan kolom kursor:
\033[baris;kolomH
Pindahkan kursor keatas N baris:
\033[NA
Pindahkan kursor kebawah N baris:
\033[NB
Pindahkan kursor kedepan N kolom:
\033[NC
Pindahkan kursor kebelakang N kolom:
\033[ND
Contohnya:
#!/bin/bash

SETMYCOLOR="\033[42;1;37m"
GOTOYX="\033[6;35H"
clear
echo -e "\033[3;20H INI DIBARIS 3, KOLOM 20"
echo -e "\033[44;1;33;5m\033[5;35H HELLO\033[0m";
echo -e "$SETMYCOLOR$GOTOYX ANDA LIHAT INI\033[0m"

Hasilnya: Silahkan dicoba sendiri

Menggunakan utulity tput untuk penempatan posisi kursor
kita dapat pula mengatur penempatan posisi kursor di layar dengan memanfaatkan utility tput,
syntaxnya:
tput cup baris kolom
contohnya:
#!/bin/bash

clear
tput cup 5 10
echo "HELLO"
tput cup 6 10
echo "PAKE TPUT"

jika dijalankan anda akan mendapatkan string HELLO di koordinat baris 5 kolom 10, dan string PAKE TPUT dibaris 6 kolom 10. informasi selengkapnya tentang tput gunakan man tput, atau info tput

Seleksi dan Perulangan

Bagian ini merupakan ciri yang paling khas dari suatu bahasa pemrograman dimana kita dapat mengeksekusi suatu pernyataan dengan kondisi terntentu dan mengulang beberapa pernyataan dengan kode script yang cukup singkat.

test dan operator

test adalah utility sh shell yang berguna untuk memeriksa informasi tentang suatu file dan berguna untuk melakukan perbandingan suatu nilai baik string ataupun numerik
syntaxnya: test ekspresi
proses kerja test yaitu dengan mengembalikan sebuah informasi status yang dapat bernilai 0 (benar) atau 1 (salah) dimana nilai status ini dapat dibaca pada variabel spesial $?.
[fajar@linux$]test 5 -gt 3
[fajar@linux$]echo $?
0
pernyataan 5 -gt (lebih besar dari) 3 yang dievaluasi test menghasilkan 0 pada variabel status $? itu artinya pernyataan tersebut benar tetapi coba anda evaluasi dengan expresi berikut
[fajar@linux$]test 3 -lt 1
[fajar@linux$]echo $?
1
status bernilai 1, berarti pernyataan salah.
anda lihat simbol -gt dan -lt, itulah yang disebut sebagai operator, secara sederhana operator adalah karakter khusus (spesial) yang melakukan operasi terhadap sejumlah operand, misalkan 2+3, "+" adalah operator sedangkan 2 dan 3 adalah operandnya, pada contoh test tadi yang bertindak sebagai oparatornya adalah -lt dan -gt, sedangkan bilangan disebelah kiri dan kanannya adalah operand. cukup banyak operator yang disediakan bash antara lain:

Operator untuk integer
Operator
Keterangan
bil1 -eq bil2
Mengembalikan Benar jika bil1 sama dengan bil2
bil1 -ne bil2
-||- Benar jika bil1 tidak sama dengan bil2
bil1 -lt bil2
-||- Benar jika bil1 lebih kecil dari bil2
bil1 -le bil2
-||- Benar jika bil1 lebih kecil atau sama dengan bil2
bil1 -gt bil2
-||- Benar jika bil1 lebih besar dari bil2
bil1 -ge bil2
-||- Benar jika bil1 lebih besar atau sama dengan bil2

Operasi string
Operator
Keterangan
-z STRING
Mengembalikan Benar jika panjang STRING adalah zero
STRING1 == STRING2
-||- Benar jika STRING1 sama dengan STRING2
7.1.3 Operator file
Operator
Keterangan
-f FILE
Mengembalikan Benar jika FILE ada dan merupakan file biasa
-d FILE
-||- Benar jika FILE ada dan meruapakan direktory

Operator logika
ekspr1 -o ekspr2
Benar jika jika salah satu ekspresi benar (or,||)
ekspr1 -a ekspr2
Benar jika ekspresi1 dan ekspresi2 benar (and,&&)
! ekspresi
Mengembalikan Benar jika ekspresi tidak benar (not!)
untuk informasi lebih lengkap man bash atau info bash di prompt shell anda.

Seleksi
if
Statement builtin if berfungsi untuk melakukan seleksi berdasarkan suatu kondisi tertentu
syntax:
if test-command1;
then
perintah1;
elif test-command2;
then
perintah2;
else
alternatif_perintah;
fi
contoh script if1:
#!/bin/bash
#if1

clear;
if [ $# -lt 1 ];
then
echo "Usage : $0 [arg1 arg2 ...]"
exit 1;
fi

echo "Nama script anda : $0";
echo "Banyak argumen : $#";
echo "Argumennya adalah: $*";

Hasilnya:
[fajar@linux$]./if1

Usage : ./if1 [arg1 arg2 ...]

statement dalam blok if...fi akan dieksekusi apabila kondisi if terpenuhi, dalam hal ini jika script if1 dijalankan tanpa argumen. kita tinggal membaca apakah variabel $# lebih kecil (less than) dari 1, jika ya maka eksekusi perintah di dalam blok if ..fi tsb. perintah exit 1 akan mengakhiri jalannya script, angka 1 pada exit adalah status yang menandakan terdapat kesalahan, status 0 berarti sukses, anda dapat melihat isi variabel $? yang menyimpan nilai status exit, tetapi jika anda memasukkan satu atau lebih argumen maka blok if...fi tidak akan dieksekusi, statement diluar blok if..filah yang akan dieksekusi.
contoh script if2:
#!/bin/bash

kunci="bash";
read -s -p "Password anda : " pass
if [ $pass==$kunci ]; then
echo "Sukses, anda layak dapat linux"
else
echo "Wah sorry, gagal nih";
fi

Hasilnya
[fajar@linux$]./if2
Password anda : bash
Sukses, anda layak dapat linux
[fajar@linux$]./if2
Password anda : Bash
Wah sorry, gagal nih

klausa else akan dieksekusi jika if tidak terpenuhi, sebaliknya jika if terpenuhi maka else tidak akan dieksekusi
contoh script if3: penyeleksian dengan kondisi majemuk
#!/bin/bash

clear
echo "MENU HARI INI";
echo "-------------";
echo "1. Bakso ";
echo "2. Gado-Gado ";
echo "3. Exit ";
read -p "Pilihan anda [1-3] :" pil;

if [ $pil -eq 1 ];
then
echo "Banyak mangkuk =";
read jum
let bayar=jum*1500;
elif [ $angka -eq 2 ];
then
echo "Banyak porsi =";
read jum
let bayar=jum*2000;
elif [ $angka -eq 3 ];
then
exit 0
else
echo "Sorry, tidak tersedia"
exit 1
fi

echo "Harga bayar = Rp. $bayar"
echo "THX"

Hasilnya:
[fajar@linux$]./if3
MENU HARI INI
-------------
1. Bakso
2. Gado-Gado
3. Exit
Pilihan anda :2

Banyak porsi = 2

Harga bayar = Rp. 4000
THX

statement builtin case

seperti halnya if statement case digunakan untuk menyeleksi kondisi majemuk, dibanding if, pemakaian case terasa lebih efisien
syntax:
case WORD in [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]...
esac

contoh script cs1
#!/bin/bash

clear
echo -n "Masukkan nama binatang :";
read binatang;

case $binatang in
pinguin | ayam | burung ) echo "$binatang berkaki 2"
break
;;
onta | kuda | anjing ) echo "$binatang berkaki 4"
break
;;
*) echo "$binatang blom didaftarkan"
break
;;
esac

Hasilnya:
[fajar@linux$]./cs1
Masukkan nama binatang : pinguin
pinguin berkaki 2

Perulangan
statement for
syntax:
for NAME [in WORDS ...]; do perintah; done
contoh script for1
#!/bin/bash

for angka in 1 2 3 4 5;
do
echo "angka=$angka";
done

Hasilnya:
[fajar@linux$]./for1
angka=1
angka=2
angka=3
angka=4
angka=5

contoh script for2 berikut akan membaca argumen yang disertakan waktu script dijalankan
#!/bin/bash

for var
do
echo $var
done

Hasilnya:
[fajar@linux$]./for2 satu 2 tiga
satu
2
tiga
atau variasi seperti berikut
#!/bin/bash

for var in `cat /etc/passwd`
do
echo $var
done

Hasilnya: hasil dari perintah cat terhadap file /etc/passwd disimpan ke var dan ditampilkan menggunakan echo $var ke layar, mendingan gunakan cat /etc/passwd saja biar efisien. :-)

statement while
selama kondisi bernilai benar atau zero perintah dalam blok while akan diulang terus
syntax:
while KONDISI; do perintah; done;
contoh script wh1 mencetak bilangan ganjil antara 1-10
#!/bin/bash

i=1;
while [ $i -le 10 ];
do
echo "$i,";
let i=$i+2;
done

Hasilnya:
[fajar@linux$]./wh1
1,3,5,7,9,
kondisi tidak terpenuhi pada saat nilai i=11 (9+2), sehingga perintah dalam blokwhile tidak dieksekusi lagi
contoh script wh2 akan menghitung banyak bilangan genap dan ganjil yang ada.
#!/bin/bash

i=0;
bil_genap=0;
bil_ganjil=0;

echo -n "Batas loop :";
read batas

if [ -z $batas ] || [ $batas -lt 0 ]; then
echo "Ops, tidak boleh kosong atau Batas loop harus >= 0";
exit 0;
fi

while [ $i -le $batas ];
do
echo -n "$i,";
if [ `expr $i % 2` -eq 0 ]; then
let bil_genap=$bil_genap+1;
else
let bil_ganjil=$bil_ganjil+1;
fi
let i=$i+1; #counter untuk mencapai batas
done

echo
echo "banyak bilangan genap = $bil_genap";
echo "banyak bilangan ganjil = $bil_ganjil";

Hasilnya:
[fajar@linux$]./wh2
Batas loop : 10
0,1,2,3,4,5,6,7,8,9,10,
banyak bilangan genap = 6
banyak bilangan ganjil = 5

untuk mengetahui apakah nilai i berupa bilangan genap kita cukup menggunakan operasi matematika % (mod), jika nilai i dibagi 2 menghasilkan sisa 0 berarti i adalah bilangan genap (semua bilangan genap yang dibagi dengan 2 mempunyai sisa 0) maka pencacah (bil_genap) dinaikkan 1, selain itu i bilangan ganjil yang dicatat oleh pencacah bil_ganjilproses ini dilakukan terus selama nilai i lebih kecil atau samadengan nilai batas yang dimasukkan. script juga akan memeriksa dahulu nilai batas yang dimasukkan apabila kosong atau lebih kecil dari 0 maka proses segera berakhir.tentunya dengan statement while kita sudah dapat membuat perulangan pada script kedai diatas agar dapat digunakan terus-menerus selama operator masih ingin melakukan proses perhitungan. lihat contoh berikut:

#!/bin/bash
#kedai

lagi='y'
while [ $lagi == 'y' ] || [ $lagi == 'Y' ];
do
clear
echo "MENU HARI INI";
echo "-------------";
echo "1. Bakso ";
echo "2. Gado-Gado ";
echo "3. Exit ";
read -p "Pilihan anda [1-3] :" pil;

if [ $pil -eq 1 ];
then
echo -n "Banyak mangkuk =";
read jum
let bayar=jum*1500;
elif [ $pil -eq 2 ];
then
echo -n "Banyak porsi =";
read jum
let bayar=jum*2000;
elif [ $pil -eq 3 ];
then
exit 0
else
echo "Sorry, tidak tersedia"
exit 1
fi

echo "Harga bayar = Rp. $bayar"
echo "THX"
echo
echo -n "Hitung lagi (y/t) :";
read lagi;

#untuk validasi input
while [ $lagi != 'y' ] && [ $lagi != 'Y' ] && [ $lagi != 't' ] && [ $lagi != 'T' ];
do
echo "Ops, isi lagi dengan (y/Y/t/Y)";
echo -n "Hitung lagi (y/t) :";
read lagi;
done

done

proses pemilihan menu dan perhitungan biaya akan diulang terus selama anda memasukkan y/Y dan t/T untuk berhenti. dalam script terdapat validasi input menggunakan while, sehingga hanya y/Y/t/T saja yang dapat diterima soalnya saya belum mendapatkan fungsi yang lebih efisien :-)

statement until
jika while akan mengulang selama kondisi benar, lain halnya dengan statement until yang akan mengulang selama kondisi salah.
berikut contoh script menggunakan until

#!/bin/bash

i=1;
until [ $i -gt 10 ];
do
echo $i;
let i=$i+1
done

Hasilnya:
[fajar@linux$]./ut
1,2,3,4,5,6,7,8,9,10,
perhatikan kodisi until yang salah [ $i -gt 10], dimana nilai awal i=1 dan akan berhenti apabila nilai i = 11 (bernilai benar) 11 -gt 10.

statement select
selectberguna untuk pembuatan layout berbentuk menu pilihan, anda lihat contoh script pembuatan menu diatas kita hanya melakukannya dengan echo secara satu persatu, dengan select akan terlihat lebih efisien.
syntax:
select varname in (&ltitem list>); do perintah; done
sewaktu dijalankan bash akan menampilkan daftar menu yang diambil dari item list, serta akan menampilkan prompt yang menunggu masukan dari keyboard, masukan tersebut oleh bash disimpan di variabel builtin REPLY, apabila daftar item list tidak dituliskan maka bash akan mengambil item list dari parameter posisi sewaktu script dijalankan. lebih jelasnya lihat contoh berikut:

#!/bin/bash
#menu1

clear
select menu
do
echo "Anda memilih $REPLY yaitu $menu"
done

Hasilnya:
layout:
[fajar@linux$]./menu1 Slackware Redhat Mandrake
1) Slackware
2) Redhat
3) Mandrake
#? 1
Anda memilih 1 yaitu Slackware
karena item list tidak disertakan dalam script, maka sewaktu script dijalankan kita menyertakan item list sebagai parameter posisi, coba gunakan statement select pada program kedai diatas.
#!/bin/bash
#kedai

lagi='y'
while [ $lagi == 'y' ] || [ $lagi == 'Y' ];
do
clear
select menu in "Bakso" "Gado-Gado" "Exit";
case $REPLY in
1) echo -n "Banyak mangkuk =";
read jum
let bayar=jum*1500;
;;
2) echo -n "Banyak porsi =";
read jum
let bayar=jum*2000;
;;
3) exit 0
;;
*) echo "Sorry, tidak tersedia"
;;
esac
do

echo "Harga bayar = Rp. $bayar"
echo "THX"
echo
echo -n "Hitung lagi (y/t) :";
read lagi;

#untuk validasi input
while [ $lagi != 'y' ] && [ $lagi != 'Y' ] && [ $lagi != 't' ] && [ $lagi != 'T' ];
do
echo "Ops, isi lagi dengan (y/Y/t/Y)";
echo -n "Hitung lagi (y/t) :";
read lagi;
done
done

Array
adalah kumpulan variabel dengan tipe sejenis, dimana array ini merupakan feature Bash yang cukup indah :-) dan salah satu hal yang cukup penting dalam bahasa pemrograman, anda bisa membayangkan array ini sebagai tumpukan buku - buku dimeja belajar. lebih jelasnya sebaiknya lihat dulu contoh script berikut:
#!/bin/bash
#array1

buah=(Melon,Apel,Durian);
echo ${buah[*]};

Hasilnya:
[fajar@linux$]./array1.
Melon,Apel,Durian

anda lihat bahwa membuat tipe array di Bash begitu mudah, secara otomatis array buah diciptakan dan string Melon menempati index pertama dari array buah, perlu diketahui bahwa array di Bash dimulai dari index 0, jadi array buah mempunyai struktur seperti berikut:
buah[0] berisi Melon
buah[1] berisi Apel
buah[2] berisi Durian

0,1,2 adalah index array, berarti ada 3 elemen pada array buah, untuk menampilkan isi semua elemen array gunakan perintah subtitusi seperti pada contoh diatas, dengan index berisi "*" atau "@". dengan adanya index array tentunya kita dapat mengisi array perindexnya dan menampilkan isi array sesuai dengan index yang diinginkan. anda lihat contoh berikut:
#!/bin/bash
#array2

bulan[0]=31
bulan[1]=28
bulan[2]=31
bulan[3]=30
bulan[4]=31
bulan[5]=30
bulan[6]=31
bulan[7]=31
bulan[8]=30
bulan[9]=31
bulan[10]=30
bulan[11]=31
echo "Banyak hari dalam bulan November adalah ${bulan[10]} hari"

Hasilnya:
[fajar@linux$]./array2
Banyak hari dalam bulan November adalah 30 hari

sebenarnya kita dapat mendeklarasikan array secara eksplisit menggunakan statement declare
contohnya:
declare -a myarray

mendeklarasikan variabel myarray sebagai array dengan opsi -a, kemudian anda sudah dapat memberinya nilai baik untuk semua elemen atau hanya elemen tertentu saja dengan perulangan yang telah kita pelajari pengisian elemen array dapat lebih dipermudah, lihat contoh :
#!/bin/bash
#array3

#deklarasikan variabel array
declare -a angka

#clear
i=0;
while [ $i -le 4 ];
do
let isi=$i*2;
angka[$i]=$isi;
let i=$i+1;
done

#tampilkan semua elemen array
#dengan indexnya berisi "*" atau "@"
echo ${angka[*]};

#destroy array angka (memory yang dipakai dibebaskan kembali)
unset angka

Hasilnya:
[fajar@linux$]./array3
0 2 4 6 8

Subrutin atau Fungsi
merupakan bagian script atau program yang berisi kumpulan beberapa statement yang melaksanakan tugas tertentu. dengan subrutin kode script kita tentunya lebih sederhana dan terstruktur, karena sekali fungsi telah dibuat dan berhasil maka akan dapat digunakan kapan saja kita inginkan. beberapa hal mengenai fungsi ini adalah:
Memungkinkan kita menyusun kode script ke dalam bentuk modul-modul kecil yang lebih efisien dengan tugasnya masing-masing.
Mencegah penulisan kode yang berulang - ulang.
untuk membuat subrutin shell telah menyediakan keyword function seperti pada bahasa C, akan tetapi ini bersifat optional (artinya boleh digunakan boleh tidak).
syntax:
function nama_fungsi() { perintah; }
nama_fungsi adalah pengenal (identifier) yang aturan penamaannya sama seperti pemberian nama variabel, setelah fungsi dideklarasikan atau dibuat anda dapat memaggilnya dengan menyebutkan nama fungsinya. lebih jelasnya lihat contoh script fungsi1 berikut:
#!/bin/bash

function say_hello() {
echo "Hello, apa kbabar"
}


#panggil fungsi
say_hello;

#panggil sekali lagi
say_hello;

Hasilnya:
[fajar@linux$]./fungsi1
Hello, apa khabar

Hello, apa khabar
jika keyword function disertakan maka kita boleh tidak menggunakan tanda kurung (), tetapi jika keyword function tidak disertakan maka tanda kurung harus digunakan, lihat contoh berikut:
#!/bin/bash

function say_hello{
echo "Hello,apa khabar"
}

balas(){
echo "Baik-baik saja";
echo "Bagaimana dengan anda ?";
}


#panggil fungsi say_hello
say_hello;

#panggil fungsi balas
balas;

Hasilnya:
[fajar@linux$]./fungsi2
Hello, apa khabar
Baik-baik saja
Bagaimana dengan anda ?

Mengirim argumen sebagai parameter ke fungsi
tentunya suatu fungsi lebih berdaya guna apabila dapat menerima argumen yang dikirim oleh pemanggilnya dan memproses argumen tsb didalam fungsinya, fungsi yang kita buat pada bash shell tentunya dapat melakukan hal tsb, apabila pada pemanggilan fungsi kita menyertakan argumen untuk diproses fungsi tsb, maka bash akan menyimpan argumen - argumen tsb pada parameter posisi 1,2,3,dst...,nah dengan memanfaatkan parameter posisi tsb tentunya kita dapat mengambil nilai yang dikirim. lebih jelasnya anda lihat contoh berikut:
#!/bin/bash

function hello{
if [ -z $1 ]; then
echo "Hello, apa khabar anda"
else
echo "Hello $1, apa khabar";
fi
}

#masukkan nama anda disini
echo -n "Nama anda :";
read nama

#panggil fungsi dan kirim isi variabel nama ke fungsi untuk dicetak
hello $nama;

Hasilnya:
[fajar@linux$]./fungsi3
Nama anda : pinguin
Hello pinguin, apa khabar

lihat fungsi hello, sebelum mencetak pesan kita melakukan pemeriksaan dengan if terhadap parameter posisi $1 apabila kosong maka pesan "Hello, apa khabar anda" yang akan ditampilkan, tetapi jika ada string yang kita input maka string tersebut akan dicetak di dalam blok else pada fungsi. argumen pertama diteruskan ke variabel 1, argumen kedua pada variabel 2, dst.. jika argumen yang dikirim lebih dari satu.

Cakupan Variabel
secara default variabel - variabel yang digunakan dalam script adalah variabel bersifat global, maksud global adalah bahwa variabel tsb dikenal dan dapat diakses oleh semua fungsi dalam script, tetapi bash menyediakan keyword localyang berfungsi membatasi cakupan (scope) suatu variabel agar dikenal hanya oleh fungsi yang mendeklarasikannya.coba lihat contoh berikut:
#!/bin/bash

proses(){
echo "Isi variabel a=$a";
}

a=2;
proses();
proses $a

Hasilnya:
Isi variabel a=2
Isi variabel a=2
coba anda tambahkan local a pada fungsi proses menjadi
proses(){
local a;
echo -e "a didalam fungsi, a=$a";
}


a=10;
proses()

echo "a diluar fungsi, a=$a"
proses $a

Hasilnya:
a didalam fungsi, a=
a diluar fungsi, a=10
a didalam fungsi a=

nah jelas perbedaannya jika mendeklarasikan variabel memakai keyword local menyebabkan variabel tersebut hanya berlaku pada fungsi yang mendekalarasikannya. pada contoh dalam fungsi proses variabel a dideklarasikan sebagai variabel local dan tidak diberi nilai.
Diakhir dokumentasi ini saya menyertakan contoh script sederhana untuk melakukan entry data-data KPLI (Kelompok Pencinta Linux Indonesia) dan menyimpannya ke sebuah file. perintah-perintah shell dan beberapa utility yang digunakan adalah:
apa yang telah anda pelajari diatas
utility test, touch
operator redirection ">>" untuk menambah data
sleep, grep (global regular expression parser), cut, cat, | (pipa), sort dan more
tput untuk menempatkan cursor pada koordinat tertentu (baris kolom)
sebagai latihan silahkan mengembangkan sendiri script dibawah ini:

#!/bin/bash
#------------------------------------------------------------------
#(C) Moh.fajar Makassar 2001, contoh script buat para linuxer
#file ini adalah public domain, silahkan mendistribusikan kembali
#atau mengubahnya asalkan anda mengikuti aturan - aturan dari GPL
#

menu(){
clear
tput cup 2 8;
echo "SIMPLE DATABASE KPLI"
tput cup 3 11;
echo "1. Entry Data"
tput cup 4 11;
echo "2. Cari Data"
tput cup 5 11;
echo "3. Cetak Data"
tput cup 6 11;
echo "4. Exit"
tput cup 7 9;
read -p "Pilihan anda [1-4] :" pil;
while [ -z $pil ] || [ $pil -lt 1 ] || [ $pil -gt 4 ];
do
tput cup 7 9
read -p "Pilihan anda [1-4] :" pil;
done

}

entry()
{

tput cup 9 27
echo "Enrty data"
tput cup 11 27
echo -n "Nama KPLI :";
read nama;

while [ -z $nama ] || grep $nama $data -q -i;
do
tput cup 13 27
echo "Ops Tidak boleh kosong atau $nama sudah ada";
sleep 3
clear
tput cup 11 27
echo -n "Nama KPLI :";
read nama;
done


tput cup 12 27
echo -n "Kota :";
read kota;
tput cup 13 27
echo -n "Alamat :";
read alamat;
tput cup 14 27
echo -n "Email :";
read email;
tput cup 16 27
echo "Rekam data ke file"
if !(echo $nama:$kota:$alamat:$email>>$data); then
echo "Ops, gagal merekam ke file"
exit 1;
fi
sleep 3;
}


cari(){
tput cup 9 27
echo "Cari data per record"
tput cup 11 27
echo -n "Nama KPLI :";
read nama;
while [ -z $nama ];
do
tput cup 13 27
echo "Ops, nama tidak boleh kosong"
sleep 3;
tput cup 11 27
echo -n "Nama KPLI :";
read nama;
done

if found=`grep $nama $data -n -i`; then
tput cup 12 27
echo -n "Kota :";
echo "$found" | cut -d: -f3
tput cup 13 27
echo -n "Alamat :";
echo "$found" | cut -d: -f4
tput cup 14 27
echo -n "Mail :";
echo "$found" | cut -d: -f5
tput cup 16 27
echo -n "Record ke- $found" | cut -d: -f1
else
tput cup 13 27
echo "Ops, data tidak ditemukan";
fi

}

cetak()
{
tput cup 12 27
echo "Tampilkan Data"
tput cup 13 27
echo -n "1->Ascendig, 2->Descending :"
read mode
clear;
if [ -z $mode ] || [ $mode -eq 1 ]; then
cat $data | sort | more -d
elif [ $mode -eq 2 ]; then
cat $data | sort -r | more -d
else
cat $data | sort | more -d
fi
}


#block utama

data="mydata"

if !(test -e $data); then
if !(touch $data); then
echo "gagal buat file database"
exit 1
fi
fi

lagi='y'
while [ $lagi == 'y' ] || [ $lagi == 'Y' ]
do
menu;
case $pil in
1) entry
;;
2) cari;
;;
3) cetak
;;
4) clear;
exit 0;
;;
*)
echo "$pil, tidak ada dalam pilihan"
;;
esac

tput cup 18 27
echo -n "Ke Menu (y/t): ";
read lagi;
done

clear

tentunya kemampuan script ini dapat kita tambahkan dengan mudah sehingga mendekati program database sesungguhnya, utility seperti tr, paste, egrep, lpr, dll.. cukup baik dan membantu untuk digunakan.

Terima kasih untuk pembelajarannya Referensi dari www.pemula.linux.or.id