Monday, April 25, 2011

.:: Expect (Komunikasi program dengan program) ::.

#!/usr/bin/expect -f
# Password change shell script, tested on Linux and FreeBSD
# ----------------------------------
# It need expect tool. If you are using Linux use following command
# to install expect
# apt-get install expect
# FreeBSD user can use ports or following command:
# pkg_add -r -v expect
# ----------------------------------
# If you are using linux change first line
# From:
#!/usr/local/bin/expect -f
# To:
#!/usr/bin/expect -f
# -------------------------------------------------------------------------
# display usage

# script must be run by root user
set whoami [exec id -u]
if {$whoami!=0} {
send_user "You must be a root user to run this script\n"
exit
}
#
set timeout -1
match_max 100000
# stopre password
set password [lindex $argv 1]
# username
set user [lindex $argv 0]
# opem shell
spawn $env(SHELL)
# send passwd command
send -- "passwd root\r"
expect "assword:"
send "rahasia\r" ------> Misal : "rahasia" adalah password baru anda
expect "assword:"
send "rahasia\r" ------> Untuk pengulangan input karakter/ retype password
send "\r"
expect eof
Yakz...pada initinya kita ingin merubah password root dengan program. Program ini berguna bila di suatu sistem ada banyak admin yang ingin merubah password root sesuai kehendaknya, tapi ketika dijalankan script ini, password root akan berubah kembali ke asal.

NB : Bila program expect belum ada, install dahulu. Kalau menggunakan Yum bisa ketikkan #yum install expect.

Lumayan, ilmu baru....

Selengkapnya....

.:: Mencari kata dalam banyak file ::.

Terkadang kita harus mencari sesuatu kata yang ada di dalam banyak file,cukup merepotkan bila kita harus membuka satu persatu file. Ada cara yang lebih efektif untuk melakukan hal tersebut, yaitu menggunakan tool find. Berikut commandnya :
[root@web htdocs]# find . -type f -name '*.php' | xargs grep -lin "select";
Dalam hal ini, kita akan mencari kata "select" dalam banyak file .php. Dan berikut hasilnya :
./cargo/booking/void.class.php
./cargo/booking/booking.class.tradisi.php
./cargo/booking/booking.class.php
./cargo/booking/SmuIntr.php
./cargo/user/user.class.php
./cargo/public_class/function.php
./PAYMENTS/avtur/Approve_Head_Ho.php
./marketingNya/CargoloadProses.php
./marketingNya/cargoruteagentglproses_3ktolwu2l8.php
./marketingNya/cargoruteagentglproses_3kt21wu2l7.php
Dalam file-file tersebutlah ada kata yang dimaksud ("select"). Mungkin agar lebih enak untuk dilihat,kita bisa mendumping output ke dalam sebua file, berikut commandnya :
[root@web htdocs]# find . -type f -name '*.php' | xargs grep -lin "select" > /home/hasil.txt
Output list file akan masuk ke file hasil.txt di folder /home.

Yakz...sederhana tapi cukup membatu bukan..

Selengkapnya....

Sunday, March 20, 2011

.:: Persistent routing di Linux (CentOS) ::.

Adakalanya dalam suatu intranet yang kompleks terdiri dari banyak blok IP yang membentuk network sendiri. Oleh karena itu diperlukan banyak juga router untuk mengatasinya.
Ditempat saya ada beberapa server yang diakses dari banyak blok network yang ada di dalam intranet tersebut. Anehnya, ketika dari sisi jaringan (dalam hal ini router) telah meng-allow blok network client mengakses ke server,tapi si server tidak memberikan respon sebagaimana umumnya.
Dalam hal ini,routing rule di sisi server berlaku. Berikut contoh routing table di salah satu server yang saya kelola :

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
202.152.54.64 0.0.0.0 255.255.255.240 U 0 0 0 eth2
10.97.53.0 192.99.99.253 255.255.255.0 UG 0 0 0 eth0
30.30.30.0 192.99.99.253 255.255.255.0 UG 0 0 0 eth0
10.100.156.0 192.99.99.253 255.255.255.0 UG 0 0 0 eth0
202.202.202.0 192.99.99.253 255.255.255.0 UG 0 0 0 eth0
192.96.96.0 192.99.99.253 255.255.255.0 UG 0 0 0 eth0
10.10.10.0 192.99.99.253 255.255.255.0 UG 0 0 0 eth0
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.99.99.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.97.97.0 192.99.99.253 255.255.255.0 UG 0 0 0 eth0
192.99.0.0 192.99.99.253 255.255.0.0 UG 0 0 0 eth0
10.101.0.0 192.99.99.253 255.255.0.0 UG 0 0 0 eth0
10.102.0.0 192.99.99.253 255.255.0.0 UG 0 0 0 eth0
192.101.0.0 192.99.99.253 255.255.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth2
0.0.0.0 202.152.54.65 0.0.0.0 UG 0 0 0 eth2

Terlihat banyak sekali bukan ? Pertanyaannya routing table tersebut akan hilang ketika kita restart mesin server tersebut. Lalu bagaimana caranya agar routing table tersebut menjadi persistent ?
Caranya adalah membuat suatu file yang berisi rangkuman seluruh informasi routing yang berlaku pada interface ethernet yang akan digunakan, file tersebut nantinya akan dinamakan sebagai route-(interface), misal route-eth0. Itu berarti isi informasi routing dalam file route-eth0 tersebut akan berlaku pada interface eth0. File tersebut harus diletakan pada /etc/sysconfig/network-scripts. Sehingga pathnya menjadi /etc/sysconfig/network-scripts/route-eth0.

Berikut isi file di route-eth0 di sisi saya :
#nano
/etc/sysconfig/network-scripts/route-eth0
GATEWAY0=192.99.99.253
NETMASK0=255.255.0.0
ADDRESS0=192.99.0.0

GATEWAY1=192.99.99.253
NETMASK1=255.255.255.0
ADDRESS1=30.30.30.0

GATEWAY2=192.99.99.253
NETMASK2=255.255.255.0
ADDRESS2=192.97.97.0

GATEWAY3=192.99.99.253
NETMASK3=255.255.255.0
ADDRESS3=192.96.96.0

GATEWAY4=192.99.99.253
NETMASK4=255.255.0.0
ADDRESS4=192.101.0.0

GATEWAY5=192.99.99.253
NETMASK5=255.255.255.0
ADDRESS5=10.100.156.0

GATEWAY6=192.99.99.253
NETMASK6=255.255.255.0
ADDRESS6=202.202.202.0

GATEWAY7=192.99.99.253
NETMASK7=255.255.0.0
ADDRESS7=10.101.0.0

GATEWAY8=192.99.99.253
NETMASK8=255.255.0.0
ADDRESS8=10.102.0.0

GATEWAY9=192.99.99.253
NETMASK9=255.255.255.0
ADDRESS9=10.97.53.0

Di sana terlihat jelas informasi routing yang akan digunakan. Dan jangan khawatir bila mesin server restart, informasi ini otomatis aka terload di routing table dan anda tidak perlu mengetik ulang kembali informasi routing ke routing table lagi.

Selengkapnya....

.:: Open port di Linux ::.

Gak banyak tulisan, mau catat dulu aja, ntar redaksionalnya dibikin belakangan. Perintah ini sangat berguna untuk membuka suatu port di lingkungan sistem operasi GNU/Linux,misal kita ingin membuka port 9134, perintahnya adalah :
#nc -l 9134
Perintah diatas akan membuka(listen) port disemua interface.
#nc -l 127.0.0.1 9134
Perintah diatas akan membuka(listen) port di interface localhost.
Tinggal disesuakan saja dengan kebutuhan, port tersebut akan dilisten kemana.

Sedikit catatan, nc itu paket netcat. Oke segitu aja dulu, ntar diedit dah..!!

Selengkapnya....

Saturday, March 12, 2011

.:: Kapan terakhir user mengganti password ::.

Mau taruh sedikit catatan aja, bagaimana cara melihat kapan terakhir user di linux kita mengganti passwordnya. Hal ini saya tulis karena kemarin ada user yang merasa terganti passwordnya,tetapi dia lupa kapan dia menggantinya.

Langsung saja perintahnya seperti ini (dalam CentOS 5.5 x64) :
#cut -d: -f1 /etc/passwd | while read line; do echo -n $line; \
chage -l $line | head -1 | awk -F: '{print $2}'; done
Maka hasilnya seperti ini :

root Feb 25, 2011
bin Feb 25, 2011
daemon Feb 25, 2011
adm Feb 25, 2011
lp Feb 25, 2011
sync Feb 25, 2011
shutdown Feb 25, 2011
halt Feb 25, 2011
mail Feb 25, 2011
news Feb 25, 2011
uucp Feb 25, 2011
operator Feb 25, 2011
games Feb 25, 2011
gopher Feb 25, 2011
ftp Feb 25, 2011
nobody Feb 25, 2011
nscd Feb 25, 2011
distcache Feb 25, 2011
vcsa Feb 25, 2011
pcap Feb 25, 2011
apache Feb 25, 2011
rpc Feb 25, 2011
ntp Feb 25, 2011
webalizer Feb 25, 2011
oprofile Feb 25, 2011
squid Feb 25, 2011
mailnull Feb 25, 2011
smmsp Feb 25, 2011
rpcuser Feb 25, 2011
nfsnobody Feb 25, 2011
named Feb 25, 2011
sshd Feb 25, 2011
dbus Feb 25, 2011
avahi Feb 25, 2011
xfs Feb 25, 2011
haldaemon Feb 25, 2011
avahi-autoipd Feb 25, 2011
gdm Feb 25, 2011
sabayon Feb 25, 2011
mysql Feb 27, 2011

Ok,sudah terlihat kan kapan terakhir usernya (misal:root) mengganti passwordnya.

Semoga bermanfaat.
:ngacir:

Selengkapnya....

Wednesday, February 23, 2011

.:: Menambah User Kedalam Sudoer ::.

Naruh catatan aja, supaya user biasa mempunyai hak login sebagai root dan mempunyai priviledge sebagaimana root. Untuk alasan keamanan sebaiknya kita menggunakan sudo daripada login sebagai root, dengan sudo user biasa bisa mengeksekusi perintah-perintah yang bisa dijalankan oleh root, dengan bantuan sudo. Jika sudo belum ada didalam sistem, download dulu dari repository.

Disini gw menggunakan distro centos, berikut caranya :

1. Edit file /etc/sudoers
2. Temukan baris root (ALL)=ALL ALL
3. Misal user yang akan ditambahkan adalah norman.
maka tambhkan dibawahnya menjadi :
root (ALL)=ALL ALL
norman (ALL)=ALL ALL

4.Jika ingin user norman dapat login dengan perintah sudo tanpa memasukkan password, dapat merubah bari diatas menjadi :
root (ALL)=ALL ALL
norman (ALL)=NOPASSWD: ALL


Segitu aja dulu, semoga bermanfaat.

Selengkapnya....

Saturday, January 15, 2011

.:: Melihat server-status di Apache ::.

Sekedar catatan aja biar gak lupa dikemudian hari, yaitu untuk melihat server status web server Apache. Langsung aja ke langkah-langkahnya :

1. Buka file httpd.conf
#nano /usr/local/apache2/conf/httpd.conf

2. Tambahkan direktif dibawah ini kedalam file tersebut (letakkan paling bawah)

SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1 192.99.122.120 192.99.122.150 10.10.10.0/24 10.10.11.0/24

Atau bisa juga menggunakan domain :

SetHandler server-status
Order deny,allow
Deny from all
Allow from mrtg.norman.net mon.abc.com

3. Agar mendapat info status yang lebih detail, tambahkan juga direktif dibawah ini
ExtendedStatus On

Link sekedar referensi : http://www.cyberciti.biz/faq/apache-server-status/

Selengkapnya....