Posts Tagged ‘Shell’

Batch Rename with Shell Script

Friday, September 9th, 2011

Kemarin di tempat saya bekerja ada kejadian bagaimana caranya me-rename nama file yang mempunyai akhiran “S” menjadi “R”, masalahnya adalah semua file tersebut tidak mempunyai pattern yang sama kecuali 3 huruf di depan dan 1 huruf dibelakang yaitu huruf “S” yang harus dirubah menjadi “R” :D Contoh nama file yang akan direname kurang lebih seperti terlihat dibawah ini :

martinus@artivisi:[~]$ ls
EDW980012011S   EDW980T22011S
EDW980G32011S   EDWSUBS42011S
martinus@artivisi:[~]$

Pada kasus diatas, kita tidak bisa secara langsung melakukan kegiatan find and replace biasa. Karena ternyata huruf “S” juga terdapat ditengah-tengah nama file tersebut seperti terlihat pada tampilan diatas :( Setelah bertanya ke paman Google sebentar, akhirnya saya menemukan pattern untuk menghapus karakter terakhir dari sebuah string menggunakan command sed. Dan pattern tersebut adalah sed 's/\(.*\)./\1/' :D akhirnya setelah dikombinasikan dengan sedikit kemampuan di shell script jadilah script yang isinya adalah sebagai berikut :

#!/bin/sh
 
ls EDW* > file.txt
 
find_file() {
   cat file.txt | sort | cut -d " " -f1
}
 
for f in $(find_file) ; do
   echo "Original filename $f"
   # tampung nama file yang baru (remove last character)
   newfilename=`echo $f | sed 's/\(.*\)./\1/'`
   echo "After delete last character $newfilename"
   r=R
   newfile1=$newfilename$r
   echo "New filename is $newfile1"
   mv $f $newfile1
done

Simpan script diatas dengan nama terserah (misalkan batch_rename.sh), kemudian beri akses execute dan jalankan. Jika tidak ada error, harusnya jika dijalankan akan merename semua file menjadi seperti dibawah ini :

martinus@artivisi:[~]$ ls
EDW980012011R   EDW980T22011R
EDW980G32011R   EDWSUBS42011R
martinus@artivisi:[~]$

Untuk penjelasan sed dan regex-nya, saya masih belum bisa menjelaskan :D Maklum saya juga masih belajar :D Semoga script diatas bisa berguna juga buat teman-teman yang mempunyai masalah yang sama :)

Simulasi Slow Network Dengan LagFactory

Tuesday, August 17th, 2010

Pernah ingin mencoba melakukan simulasi “jaringan lambat” ?? Jika iya, maka teman-teman dapat mencoba menggunakan sebuah shell script dengan nama LagFactory yang bisa di unduh pada http://software.inl.fr/trac/wiki/LagFactory :) Agar dapat menggunakan script LagFactory ini, editlah dahulu variabel IFACE dan TARGET sesuai dengan kebutuhan kita. Nah sebagai contoh, jika kita ingin melakukan simulasi pada komputer kita sendiri gantilah isi variabel IFACE dan TARGET menjadi seperti dibawah ini :

27
28
IFACE="lo lo" # Input and output interface to simulate lag in INPUT and OUTPUT
TARGET="0.0.0.0/0" # Host or network to apply lag on

Setelah selesai, sekarang jalankanlah dengan menggunakan akses root (#) dengan cara seperti dibawah ini :

root@martinusadyh:[/home/martinus/Desktop]# ./lagfactory.sh start 10000 10
DELAY : 10000 ms
LOSS : 10%
RTNETLINK answers: Invalid argument
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: Invalid argument
RTNETLINK answers: File exists
We have an error talking to the kernel
root@martinusadyh:[/home/martinus/Desktop]#

Jika sudah, sekarang coba jalankan perintah ping pada localhost seperti dibawah ini :

martinus@martinusadyh:[/]$ ping localhost
PING martinusadyh (127.0.0.1) 56(84) bytes of data.
64 bytes from martinusadyh (127.0.0.1): icmp_seq=11 ttl=64 time=18625 ms
64 bytes from martinusadyh (127.0.0.1): icmp_seq=13 ttl=64 time=18476 ms
64 bytes from martinusadyh (127.0.0.1): icmp_seq=10 ttl=64 time=21548 ms
64 bytes from martinusadyh (127.0.0.1): icmp_seq=12 ttl=64 time=19786 ms
64 bytes from martinusadyh (127.0.0.1): icmp_seq=14 ttl=64 time=18206 ms
64 bytes from martinusadyh (127.0.0.1): icmp_seq=15 ttl=64 time=19416 ms
martinus@martinusadyh:[/]$

Untuk membandingkan dengan keadan “normal”, sekarang matikan dahulu script LagFactory dengan menggunakan perintah ./lagfactory.sh stop dan cek hasil ping yang seharusnya nilai time yang dihasilkan berkisar dibawah 0.040 ms di seperti dibawah ini :

root@martinusadyh:[/home/martinus/Desktop]# ./lagfactory.sh stop
RTNETLINK answers: No such file or directory
root@martinusadyh:[/home/martinus/Desktop]# ping localhost
PING martinusadyh (127.0.0.1) 56(84) bytes of data.
64 bytes from martinusadyh (127.0.0.1): icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from martinusadyh (127.0.0.1): icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from martinusadyh (127.0.0.1): icmp_seq=3 ttl=64 time=0.038 ms
64 bytes from martinusadyh (127.0.0.1): icmp_seq=4 ttl=64 time=0.037 ms
^C
--- martinusadyh ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.035/0.037/0.040/0.006 ms
root@martinusadyh:[/home/martinus/Desktop]#

Sebenarnya apasih tujuan dari posting ini ?? Tujuan utama-nya yaitu adalah agar kita bisa mengetahui seberapa “cepat”-kah aplikasi yang kita bangun jika dihadapkan pada kondisi jaringan yang “jelek” :) (Bayangkan jika kita mempunyai client yang outletnya ada di pelosok desa, dan koneksi yang tersedia hanyalah GPRS saja :D )

Bagaimana teman-teman, tertarik untuk mencoba ??? :)

Referensi

  1. http://software.inl.fr/trac/wiki/LagFactory

Call For Paper Programming Tutorial on SlackID Ezine

Tuesday, May 25th, 2010

Hii slacker’s, suka menulis tentang bahasa pemrograman ? Berprofesi sebagai programmer dan kebetulan menggunakan Slackware sebagai sistem operasi utama-nya ? Jika iya, apakah teman-teman mau berbagi pengalaman dengan pengguna Slackware yang lain bagaimana menyiapkan segala keperluan yang dibutuhkan agar kegiatan koding kita menjadi nyaman menggunakan Slackware ? Tidak dapat dipungkiri, menyiapkan “alat perang untuk koding” di Slackware benar-benar merupakan sebuah tantangan tersendiri :) Terutama jika ketergantungan “library” yang digunakan oleh IDE atau bahasa pemrograman-nya sendiri banyak sekali, bisa-bisa kita tidak “produktif” karena terlalu sibuk untuk menyiapkan “alat perang” dahulu :) Dan kalau sudah begini biasanya pindah ke distro yang lebih mudah :D

Untuk teman-teman ketahui, SlackID edisi ke 2 yang akan terbit mendatang akan memasukkan kategori Programming dalam rubriknya :) Nah kira-kira menurut teman-teman slacker’s sendiri, topik apa yang ingin dibahas pada Edisi ke 2 ini ?? Beberapa ide yang muncul pada rapat kemarin adalah membahas bahasa pemrograman dibawah ini :

  1. Shell Script / Bash
  2. Java
  3. Perl
  4. Python
  5. GNU C/C++
  6. FreePascal
  7. Linux Kernel Programming

(more…)