Posts Tagged ‘Daily Use’

28.12.2011 – Membuat File Locking Sederhana di Skrip Bash

Wednesday, December 28th, 2011

Sebetulnya ini adalah copy paste dari tulisan original milik teman saya, Cecep Mahbub. Tapi karena isinya menarik buat saya, jadi saya putuskan untuk menulisnya ulang disini. Kang Cecep, nuhun infonya. Saya ikut numpang kopas yah :)

Original link, Membuat File Locking Sederhana di Skrip Bash

Membuat File Locking Sederhana di Skrip Bash

Tips sederhana untuk membuat locking, agar skrip yang dijalankan via cron tidak dijalankan berkali-kali, alias hanya satu proses dalam satu saat bersamaan.

Misal Anda ingin menjalankan sebuah proses melalui cron secara rutin tiap sekian menit sekali. Anda juga harus memastikan proses tersebut tidak dijalankan lebih dari satu proses bersamaan. Misal, karena saat eksekusi skrip pertama kali belum selesai, lalu skrip keburu dijalankan lagi oleh cron. Dan itu tidak boleh.

Solusi sederhana untuk permasalahan Anda adalah dengan menggunakan file locking sederhana.

————————————————-
#!/bin/bash

LOCKFILE=”/tmp/skrip.lock”

if [ -e "$LOCKFILE" ] ; then
echo “Ada file lock. Mungkin skrip sedang dijalankan.”
exit 1
fi

touch $LOCKFILE

#
# disini Anda bisa tulis proses yang ingin dijalankan, misalnya:
# – rsync utk backup
# – rdiff-backup
# – scp
# – dll

# setelah proses selesai dijalankan, hapus file lock.
rm -f $LOCKFILE
————————————————-

20.09.2011 – Login SSH Otomatis Tanpa Prompt Password

Tuesday, September 20th, 2011

Alhamdulillah, saya sejak 2 hari ini belajar tentang cara login ssh secara otomatis. Apabila dikembangkan, teknik ini juga berguna saat kita akan melakukan sinkronisasi pada server tanpa menginput password secara berulangkali. Sebagai ilustrasi, berikut skema yang saya gunakan. Saya memiliki 3 server, pocoyo, barney, dan teletubbies, dimana ip address untuk mereka, secara berturut-turut, 10.7.3.121, 10.7.3.118, dan 10.7.3. Saya melakukan login kedalam pocoyo. Kemudian, pocoyo akan mengambil data dari 2 server yang lain, yaitu barney dan teletubbies. Dengan cara manual, dari dalam pocoyo, saya harus melakukan ssh baik ke barney maupun ke teletubbies, untuk kemudian melakukan operasi data. Nah, dengan cara yang baru, saya hanya perlu mengetikkan ip address barney dan teletubbies, lalu secara otomatis saya akan login kedalam mereka.
Oke, kita mulai yah..

  1. Saya login dengan menggunakan user nanda di server pocoyo, lalu create ssh-keygen. Pada permintaan untuk mengisi field. Tekan pilihan Enter pada setiap pilihan tersebut tanpa mengetikkan apa-apa.
    [nanda@pocoyo ~]$ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/nanda/.ssh/id_rsa): Tekan ENTER
    Enter passphrase (empty for no passphrase): Tekan ENTER
    Enter same passphrase again:Tekan ENTER
    Your identification has been saved in /home/nanda/.ssh/id_rsa.
    Your public key has been saved in /home/nanda/.ssh/id_rsa.pub.
    The key fingerprint is:
    e3:45:ec:29:b4:c8:8a:c8:05:54:fe:c8:cc:26:ef:14 nanda@pocoyo
  2. Action ini akan meng-create 2 file pada ~/.ssh. yaitu id_rsa dan id_rsa.pub.
    [nanda@pocoyo ~]$ cd ~/.ssh/
    [nanda@pocoyo .ssh]$ ls -l
    total 8
    -rw——- 1 nanda nanda 1671 Sep 20 20:04 id_rsa
    -rw-r–r– 1 nanda nanda 394 Sep 20 20:04 id_rsa.pub
  3. Kopi file id_rsa.pub ke server barney. Untuk pertamakali, anda akan diminta memasukkan password user login. Ketik yes lalu masukkan password.
    [nanda@pocoyo .ssh]$ ssh-copy-id -i ~/.ssh/id_rsa.pub 10.7.3.118
    [nanda@pocoyo ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub 10.7.3.118
    27
    The authenticity of host ’10.7.3.118 (10.7.3.118)’ can’t be established.
    RSA key fingerprint is 9e:e8:94:bc:5a:1b:26:11:7d:d8:2c:9c:f6:01:ab:e3.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added ’10.7.3.118′ (RSA) to the list of known hosts.
    nanda@10.7.3.118′s password: masukkan password anda
    Now try logging into the machine, with “ssh ’10.7.3.118′”, and check in:
    .ssh/authorized_keys
    to make sure we haven’t added extra keys that you weren’t expecting.
  4. Sekarang, lakukan login ke server barney.
    [nanda@pocoyo ~]$ ssh 10.7.3.118
    Last login: Mon Sep 19 14:59:58 2011 from 10.7.3.121
    [nanda@barney ~]$
  5. Voila!! Akses ke server lain sudah bisa dilakukan tanpa permintaan password. Oke, lakukan hal yang sama untuk server selanjutnya.

Nah, sekarang kita akan coba membuat script sederhana untuk memudahkan administrasi login. Oke, kita mulai.

  1. Masih di server pocoyo. Buat file ssh_access.sh di /home/nama user anda. Kemudian save.
    [nanda@pocoyo ~]$ vim ssh_access.sh
    #!/bin/bash
    while :
    do
    clear
    echo “Welcome. Silakan pilih komputer yang hendak anda remote”
    echo “=============================”
    echo “[ a ] 10.7.3.118 a.k.a barney”
    echo “[ b ] 10.7.3.108 a.k.a teletubbies”
    echo “=============================”
    read host
    case $host in
    a) echo “Menghubungkan ke Barney …” ; ssh nanda@10.7.3.118 ;;
    b) echo “Menghubungkan ke Teletubbies ..” ; ssh nanda@10.7.3.108 ;;
    x) exit ;;
    esac
    done
  2. Ubah mode file ssh_access.sh agar bisa dieksekusi.
    [nanda@pocoyo ~]$ chmod 777 ssh_access.sh
  3. Jalankan file ssh_access.sh.
    Welcome. Silakan pilih komputer yang hendak anda remote
    ============================
    [ a ] 10.7.3.118 a.k.a barney
    [ b ] 10.7.3.108 a.k.a teletubbies
    ============================
    tekan pilihan b, lalu Enter
    Menghubungkan ke Teletubbies ..
    Last login: Tue Sep 20 20:12:04 2011 from 10.7.3.121
    [nanda@teletubbies ~]$
  4. Well Done. Selanjutnya anda tinggal menambahkan baris dibawahnya untuk setiap server yang akan anda remote. Oke, selamat mencoba yah….

06.09.2011 – Mencari File via Console pada Linux

Tuesday, September 6th, 2011

Awalnya saya mengalami kesulitan setiap harus nyari file di linux pake console. Linux yang saya sering gunakan memang tidak menggunakan GUI, performa yang jadi alasannya. Dan berikut beberapa tips untuk mencari file menggunakan console yang saya pakai.

Dengan menggunakan locate.

  • Pertama saya melakukan update database pencarian dengan command updatedb
    [root@gateway ~]# updatedb
  • Setelah itu, lakukan pencarian file yang dibutuhkan dengan locate.
    [root@gateway ~]# locate (penggalan nama file / keseluruhan nama file)

Dengan menggunakan find.

Apabila kita menginginkan pencarian tanpa mengupdate database terlebih dahulu, kita bisa menggunakan command find dengan beberapa variasi pilihan pencarian

  • Pencarian berdasarkan nama
    [root@gateway ~]# find /etc/ –name iptables
  • Pencarian berdasarkan izin akses
    [root@gateway ~]# find /etc/ –perm 755
  • Pencarian berdasarkan besar file tertentu, misalnya 23,13 MB
    [root@gateway ~]# find /etc/ –size 23,13M
  • Pencarian berdasarkan besar file lebih besar dari 15 MB
    [root@gateway ~]# find /etc/ –size +15M
  • Pencarian berdasarkan besar file lebih kecil dari 15 MB
    [root@gateway ~]# find /etc/ –size -15 MB

Nah, demikian sebagian trik buat pencarian menggunakan console di Linux. Semoga membantu yah..