Tuesday, May 25, 2010

การประยุกต์ใช้งาน คำสั่ง mail และ crontab และการเขียน Shell script เบื้องต้น

การประยุกต์ใช้งาน คำสั่ง mail และ crontab และการเขียน Shell script เบื้องต้น


โจทย์มีอยู่ว่า หากเราต้องการให้ระบบ ส่งเมล์บอกเราว่า เรามีเนื้อที่ในดิสก์เหลืออยู่เท่าไหร่ ทุก ๆ วัน เราจะเขียนสั่งงานอย่างไร

สิ่งที่เราจะต้องเริ่มทำเป็นอันดับแรก คือต้องรู้ว่า เราต้องทำอะไรบ้าง นั่นคือ

1. ต้องหาว่า เรามีเนื้อที่เหลือในดิสก์เท่าไหร่ หรือใช้ไปแล้วเท่าไหร่ คำสั่งที่ใช้คือ

df –h

2. แต่เนื่องจากว่า เราต้องการให้เก็บเป็นไฟล์ text เพื่อที่เราจะได้ใช้งานในขั้นตอนถัดไปจากนี้ เราจึงจำเป็นต้องใช้คำสั่งเพิ่มเติมจากปกติเป็นพิเศษ นั่นคือ

df –h > df.txt

3. เราต้องให้ระบบส่งเมล์ออกไปหาเรา คำสั่งที่ใช้ คือ

mail -s "Subject ใส่อะไรก็ได้" "E-mail ที่เราจะให้ส่งไปหา" < df.txt

ยกตัวอย่างเช่น

mail -s "Disk on server" "taveesak@gmail.com" < df.txt

4. เอาคำสั่งข้อสองและข้อสามมารวมกันให้ทำงานได้ในบรรทัดเดียว ก็จะเป็น

df -h > df.txt;mail -s "Disk on server" "taveesak@gmail.com" < df.txt

5. เพื่อความสะดวก ก็ให้เราเขียนเป็น Script ขึ้นมา เวลาใช้งานก็จะเรียกใช้งานได้สะดวกขึ้น โดยมีขั้นตอนดังนี้

a) Login เป็น root ก่อน
b) เพื่อความแน่นอนให้เราพิมพ์ cd เพื่อกลับไปยัง Home ของ root จะได้มั่นใจว่า ไฟล์ script ที่เราเขียนไปอยู่ที่นั่นแน่นอน
c) พิมพ์คำสั่ง vim showdisk.sh หรือจะใช้ชื่ออื่นก็ได้นะ เอาที่จำง่าย ๆ
d) กดปุ่ม i เพื่อให้เราสามารถเขียนคำสั่งลงไปได้ แล้วก็เขียนคำสั่งตามด้านล่างเลย

#!/bin/bash
df -h > df.txt;mail -s "Disk on server" "taveesak@gmail.com" < df.txt


e) จากนั้นกดปุ่ม ESC เพื่อออกจากโหมดแก้ไข และพิมพ์ว่า :wq เพื่อบันทึกและออกจากโปรแกรม
f) ลองสั่ง ls –l จะพบว่ามีไฟล์ showdisk.sh
g) โดยปกติแล้ว script ที่เราเขียนจะยังไม่สามารถ run ได้ จนกว่าเราจะตั้ง mode ให้สามารถ run ซึ่งวิธีการตั้งให้เราพิมพ์คำสั่งดังนี้

Chmod 700 showdisk.sh

h) เพียงเท่านี้ เราก็มี script file ที่สามารถใช้งานได้แล้ว ซึ่งเราสามารถทดสอบการทำงานโดยการเรียก script ขึ้นมาใช้งาน ด้วยการพิมพ์คำสั่งว่า ./showdisk.sh

6. จากโจทย์ บอกว่า เราต้องส่งเมล์บอกทุก ๆ วัน เราก็ต้องตั้งเวลาในการรันscript โดยใช้ crontab ซึ่งมีวิธีการทำดังนี้

a) Login เป็น root ก่อน
b) พิมพ์คำสั่ง vi /etc/crontab
c) กดปุ่ม i เพื่อให้เราสามารถเขียนคำสั่งลงไปได้ แล้วก็เขียนคำสั่งตามด้านล่างเลย

59 23 * * * root /root/showdisk.sh

d) จากบรรทัดด้านบน script นี้ จะถูกรันทุก ๆ วัน เวลา 23:59 น. หรือก่อนเที่ยงคืนซัก 1 นาทีนั่นเอง
e) จากนั้นกดปุ่ม ESC เพื่อออกจากโหมดแก้ไข และพิมพ์ว่า :wq เพื่อบันทึกและออกจากโปรแกรม

7. เท่านี้ก็เสร็จเรียบร้อย ที่เหลือก็แค่รอเมล์ที่จะเข้ามาตามเวลาที่เราระบุไว้ใน crontab

Tuesday, April 27, 2010

ปิด Update checker บน Splunk

หลังจากที่เราดาวน์โหลด Splunk มาใช้งาน และใช้งานมาเป็นระยะเวลานึงแล้ว
Splunk ก็ออกเวอร์ชั่นใหม่ออกมา ซึ่งค่อนข้างจะบ่อยมาก ๆ
และเนื่องจากว่า Splunk ที่เราใช้งานอยู่ก็ใช้ได้ปกติ และไม่ต้องการเปลี่ยนเวอร์ชั่นใหม่
แต่ทุกครั้งที่เราเข้าใช้งาน หน้าจอแรกจะมี notification บอกเสมอว่า มีเวอร์ชั่นใหม่มาแล้ว จะอัพเดทมั้ย
และก็รอให้เราเลือกว่าจะไปดาวน์โหลดเวอร์ชั่นใหม่ หรือจะ Skip Update
ซึ่งบางครั้งเราอยากที่จะเข้าไปใช้งานเลย โดยไม่ต้องเข้ามาคลิกในส่วนนี้ทุก ๆ ครั้ง ดังรูปด้านล่าง



เราสามารถเข้าไปแก้ไขค่าในระบบได้ ดังนี้

1. Login เข้าไปที่ Splunk server ผ่านทาง SSH แล้วทำตัวเองให้เป็น root ซะก่อน
2. พิมพ์ คำสั่ง vi /opt/splunk/etc/system/local/web.conf



3. กดปุ่ม i เพื่อ edit สังเกตว่า จะมีคำว่า INSERT ที่มุมล่างด้านซ้ายของจอ
จากนั้น เพิ่มคำสั่ง updateCheckerBaseURL = 0 ลงไปที่บรรทัดสุดท้าย



4. กดแป้น ESC ที่คีย์บอร์ด สังเกตที่มุมล่างด้านซ้าย คำว่า INSERT จะหายไป
จากนั้นพิมพ์์คำสั่ง:wq จะเป็นการออกจากโปรแกรม vi

5. พิมพ์ คำสั่ง/opt/splunk/bin/splunk restart เพื่อเริ่มการทำงานของ Splunk server อีกครั้ง




ุ6. ลองเปิด Splunk ที่หน้า Browser ดู จะเห็นว่า เพจที่ตรวจสอบ Update จะหายไปแล้ว และจะเข้ามาที่หน้าแรกของ Splunkโดยอัตโนมัติเลย ดังรูป




ปิด Update checker บน Splunk ด้วยวิธีนี้ สามารถใช้ได้กับ Splunk ครอบคลุมทั้งเวอร์ชั่น สามและสี่ ครับ



Ref:http://www.splunk.com/base/Documentation/3.3.4/Installation/DisableUpdateChecker

Monday, April 19, 2010

Apache - การป้องกัน Directory listing

เรื่องนี้ หลาย ๆ คนอาจจะรู้แล้ว แต่เขียนเอาไว้เพื่อเตือนเวลาลืมครับ

เมื่อเราใช้ apache เป็น web server บางครั้ง อาจจะประสบปัญหาว่า ถ้าเราไม่ได้ browse ไปที่ path โดยตรง หรือว่าใส่ชื่อ path ผิด จะทำให้ apache ไปเรียก directory ขึ้นมา ซึ่งจะทำให้เราสามารถเห็นโครงสร้างของเวบได้ หรือสามารถที่จะเห็น Folder ภายในServer ของเราได้
ดังนั้น จึงมี option ที่สามารถแก้ไขปัญหานี้ได้ นั่นคือ

IndexIgnore *

ซึ่งเราจะต้องนำไปวางไว้ที่ /etc/apache/apache.conf หรือที่ /etc/httpd.conf (ถ้าเป็น Redhat) จากนั้น ให้ restart web service

แค่นี้ก็เรียบร้อย

REF : http://www.cyberciti.biz/faq/apache-web-server-prevent-directory-folder-listing/

Tuesday, March 30, 2010

Lost page - Windows 2008 Initial configuration task

เมื่อเราลง Windows 2008 ใหม่ ๆ จะปรากฏหน้าจอ Windows 2008 Initial configuration task ขึ้นมาเพื่อให้เราสามารถทำ Post installation ได้สะดวก ซึ่งเป็น Tools ที่ใช้งานง่ายมาก ๆ สำหรับ Admin มือใหม่ อย่างผม
ดูรูปแล้วกันว่า น่าใช้ไหม


แต่บางครั้ง เราอาจจะเผลอลืม กด Checkbox เพื่อไม่ให้แสดงหน้านี้อีก อาจเป็นเพราะว่า ในตอนนั้นเราเซทไปเรียบร้อยแล้ว หรือด้วยเหตุผลอะไรก็ตาม ทีนี้ ถ้าเราอยากจะได้หน้าจอนี้กลับมาเหมือนเดิมล่ะ จะทำอย่างไร

จากการทดลองหาอยู่นานสองนาน ในที่สุดผมก็พบว่า ถ้าต้องการเรียกหน้าจอ Windows 2008 Initial configuration task ขึ้นมาอีกครั้ง เราให้ทำตามขั้นตอนดังนี้

1. ไปกดปุ่ม Start ตามด้วย Run
2. พิมพ์คำสั่ง Oobe.exe แล้วกด Enter

จะเป็นการเรียกหน้าจอ Windows 2008 Initial configuration task ขึ้นมาแสดงผลให้เราเห็นครับ

Monday, March 22, 2010

Squid Configuration - How to build simple Proxy Server

Proxy server เป็น Server ชนิดหนึ่ง ซึ่งมีคุณสมบัติดังนี้

1. Bandwidth management
ทำหน้าที่เก็บรวบรวมข้อมูลของหน้าเวบเพจต่าง ๆ ที่ผู้ใช้งานเรียกใช้ และนำมาแสดงผลให้ผู้ใช้คนอื่น ๆ ถ้าเรียกไปยังเวบเดียวกันในช่วงเวลาไม่นานนักหลังจากที่มีการเรียกใช้ไปแล้วครั้งแรก โดยที่ไม่ต้องออกไปที่เวบนั้นบ่อย ๆ ทั้งนี้ เพื่อเป็นการประหยัด Bandwidth ที่ใช้งานนั่นเอง
2. Authentication
เราสามารถที่จะเก็บข้อมูลการเข้าไปใช้งาน Internet ของผู้ใช้ได้ ว่า ผู้ใช้งานเข้าใช้งานเวบไซท์ไหนมากที่สุด และในช่วงเวลาใดบ้าง รวมถึงการทำ Authentication ก่อนเข้าใช้งานเวบไซท์ ต่าง ๆ ได้ด้วย เพื่อที่จะสามารถระบุตัวตนของคนที่เข้าไปใช้งานเวบไซท์ต่าง ๆ ได้
3. Restriction
สามารถที่จะ Block เวบไซท์ที่ไม่ต้องการให้ผู้ใช้งานเข้าไปใช้งานได้

Package สำหรับการทำ Proxy server ที่เป็นที่นิยมมากตัวหนึ่งคือ Squid ปัจจุบันเป็น Version 3 แล้ว

สิ่งที่ต้องเตรียมการ :
1. Computer สำหรับทำเป็น Proxy server 1 เครื่อง
2. OS Installation สามารถเข้าไปดูได้ที่ หรือจะทำเองก็ได้ ตามใจชอบ
http://itprosolution.blogspot.com/2010/01/debian-5-minimal-installation-part-1.html
http://itprosolution.blogspot.com/2010/01/debian-5-minimal-installation-part-2.html
http://itprosolution.blogspot.com/2009/08/debian-5-post-installations.html

ขั้นตอนการติดตั้ง (Debian only ถ้าใช้ Distro อื่น ๆ ก็คล้าย ๆ กัน)
1. ติดตั้ง squid3 โดยใช้ Aptitude

aptitude install squid3

2. แก้ไขไฟล์/etc/squid3/squid.conf

Configuration file (/etc/squid3/squid.conf)

auth_param basic program /usr/lib/squid3/squid_ldap_auth -v 3 -b "ou=user,o=ldap.example.com" -f "uid=%s" 1.1.1.1 #ถ้าไม่ทำ Authen หรือถ้าไม่มี LDAP Server ก็ไม่ต้องใส่

auth_param basic children 5
auth_param basic realm Web-Proxy
auth_param basic credentialsttl 1 minute

acl ldap-auth proxy_auth REQUIRED #ถ้าไม่ทำ Authen หรือถ้าไม่มี LDAP Server ก็ไม่ต้องใส่


http_access allow ldap-auth #ถ้าไม่ทำ Authen หรือถ้าไม่มี LDAP Server ก็ไม่ต้องใส่ให้ใส่ว่า http_access allow all แทน
http_access deny all #ถ้าไม่ทำ Authen หรือถ้าไม่มี LDAP Server ก็ไม่ต้องใส่


http_port 7890 # อันนี้เป็น port ของ Proxy เปลี่ยนได้นะ จะเอา 8080 ก็ได้

hierarchy_stoplist cgi-bin ?


cache_mem 1024 MB
maximum_object_size_in_memory 8 MB
memory_replacement_policy heap LFUDA
ipcache_high 95
ipcache_low 90

cache_dir aufs /var/spool/squid3 2048 16 256
maximum_object_size 32 MB
cache_replacement_policy heap LFUDA
store_dir_select_algorithm round-robin
cache_swap_high 95
cache_swap_low 90

ie_refresh on
vary_ignore_expire on

cache_access_log /var/log/squid3/access.log squid
cache_log /var/log/squid3/cache.log
cache_store_log none
logfile_rotate 90
pid_filename /var/run/squid3.pid
buffered_logs off
strip_query_terms off

pipeline_prefetch on

ftp_passive on
ftp_sanitycheck on

#cache deny QUERY
quick_abort_min 0 KB
quick_abort_max 0 KB

refresh_pattern -i \.(asp\?|aspx\?|php\?) 0 20% 720
refresh_pattern -i \.(asp|aspx|php)$ 0 20% 720
refresh_pattern -i \.(jpg|gif|jpeg|png|css|js|bmp|tif|tiff|xbm|png|swf)$ 0 100% 14400
refresh_pattern -i \.(exe|zip|gz|arj|lha|lzh|rar|tgz|tar|Z)$ 4320 80% 43200 override-lastmod reload-into-ims ignore-reload
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern . 0 20% 4320

prefer_direct on

half_closed_clients off

cache_mgr taveesak@gmail.com
visible_hostname http://itprosolution.blogspot.com



เสร็จแล้ว อย่าลืม Restart Squid ล่ะ

/etc/init.d/squid3 restart

เวลาใช้งานทำได้ 2 แบบคือ

1. ถ้ามี Firewall อยู่ในองค์กร ก็ตั้งให้ใครที่จะออกไปยัง Port 80 ให้วิ่งผ่านมาที่ Proxy server นี้อย่างเดียว
2. ถ้าไม่มี Firewall ก็เข้าไปตั้งค่า Proxy server ใน Browser ให้ชี้้มาที่ Proxy server ตัวนี้ วิธีการก็ลองเข้าไปหาดูใน Google นะ



#Code Reference : http://www.linuxthai.org/forum/index.php?topic=472.0

Monday, February 8, 2010

ใช้ Splunk 3 มา monitor Vmware Esxi4

หลังจากที่ใช้ splunk มาได้ซักระยะหนึ่ง ก็เริ่มรู้สึกว่า ชีวิตมันง่ายขึ้น สำหรับเรื่องของการดู log จากอุปกรณ์ต่าง ๆ ก็เลยคิดว่า แล้วถ้าเป็น vmware ล่ะ ก็คงจะมีการส่ง log เหมือน ๆ กันนั่นละ อย่ากระนั้นเลย หาวิธีที่จะทำให้ Splunk สามารถ monitor log ของ vmware ดีกว่า

สิ่งที่ทำเป็นอันดับแรก คือเข้าไปดูข้อกำหนดต่าง ๆ ที่มีคนทำมากันแล้ว ปรากฏว่า มีคนทำ Splunk Application สำหรับ monitor vmware log เลย แต่เป็น esx3.0 และทำบน Splunk V.3 เท่านั้น ซึ่งปัจจุบัน Splunk 3 ก็ยังมีให้โหลดอยู่ แต่เรื่องจาก vmware ที่ผมมีอยู่ กลับกลายเป็นว่า เป็น esxi 4.0 ซึ่งเป็น เวอร์ชั่นใหม่กว่า แต่คิดว่า คงไม่เป็นไรครับ อย่างนี้คงต้องลองล่ะ โดยไม่รอช้า เราก็จะเริ่มทำการทดสอบกันเลย

Test Environment

Debian 5.0 operating system
Splunk 3.4.9 เวอร์ชั่นประจำตัว (จริง ๆ มีเวอร์ชั่นใหม่กว่านี้นะ จะเป็น 3.4.12 ใครจะใช้ก็ได้ แต่ผมชอบเวอร์ชั่นนี้ครับ)
VMware Esxi 4.0 ที่มี Guest OS run อยู่ข้างใน (ใช้งานอยู่นั่นเอง)

Configuration

1. เริ่มโดยการสร้าง OS ขึ้นมาก่อน โดยลง OS เป็น Debian 5.0 แล้วสั่ง update ครับ สำหรับวิธีการลง ให้หาอ่านในเรื่องก่อน ๆ ครับ

2. Download Splunk 3.4.9 จากหน้าเวบ Splunk แต่ถ้าใครไม่อยากเปิดหน้าเวบ ก็ copy link ไปแปะที่ console ของ OS ได้เลย แต่ต้องลง wget ก่อนนะ ถึงจะใช้ได้

wget 'http://www.splunk.com/index.php/download_track?file=/3.4.6/linux/splunk-3.4.6-51113-linux-2.6-intel.deb&ac=&wget=true&name=wget&typed=releases'

3. install splunk โดยพิมพ์ว่า dpkg –i splunk…..(กด tab ดูเอาเองครับ)

4. install java runtime โดยพิมพ์ว่า aptitude install sun-java6-jre

5. ทดสอบว่า install java เรียบร้อยแล้วหรือยัง โดยพิมพ์ว่า

java -version

6. Download Splunk app for vmware จาก

http://www.splunk.com/view/vmware-virtualization/SP-CAAADPN

เอามาวางไว้ที่เครื่อง

7. แตกไฟล์ออกมา จะได้ folder ชื่อ vmware

8. นำ folder vmware ไปวางไว้ที่ /opt/splunk/etc/apps

9. เข้าไปแก้ไฟล์ /opt/splunk/etc/apps/vmware/default/vmware.conf

url=https:// /10.1.1.1/sdk #ให้ใส่ IPaddress ของ vmware server ครับ
username=/user1 # ใส่ username ที่ใช้เข้า vmware server ครับ
Password=/pass1 # ใส่ password ที่ใช้เข้า vmware server ครับ

10. Set environment สองค่า


# export SPLUNK_HOME=/opt/splunk
# export PYTHONPATH=/opt/splunk/lib/python2.5
(บางคนอาจจะต่างจากนี้ ให้ตรวจสอบก่อนว่า มี folder ประมาณนี้อยู่หรือไม่ )

11. ทดสอบ ว่า App ทำงาน หรือไม่ โดยพิมพ์ดังนี้


# cd /opt/splunk/etc/apps/vmware
# java –jar lib/splunk.jar


ซึ่งถ้า app ทำงานเป็นปกติ ก็จะไม่ขึ้นข้อความ error ใด ๆ

12. สั่ง restart splunk โดยพิมพ์ว่า

# /opt/spunk/bin/splunk restart

เมื่อเราเข้าไปดูที่หน้าจอ ก็จะพบว่า มี App ของ Splunk run อยู่แล้ว ดังรูป



และเมื่อคลิก Drop down list ที่ Dashbaord จะพบ หน้า Dashboard ของ vmware ต่าง ๆ ดังรูป



เมื่อลองเข้าไปคลิก ๆ ดู ก็จะแสดงผลดังรูป



Test Summary and problem

อย่างที่บอกตั้งแต่แรกว่า App นี้ถูกเขียนมาสำหรับ monitor vmware esx3.0 ดังนั้น เมื่อเรานำมาใช้กับ Esxi4.0 คุณสมบัติบางอย่างจึงไม่สามารถใช้งานได้ครับ แต่ส่วนใหญ่ก็จะใช้งานได้ดีครับ

หลังจากที่ลองกับ Splunk 3 แล้ว ผมก็เลยลองใช้กับ Splunk 4 บ้าง ซึ่งผลก็ปรากฏว่า App ไม่สามารถทำงานได้ตามปกติ ดังรูป



เมื่อคลิกเข้า App ก็จะเจอ error ดังรูปครับ




อ้างอิง : http://www.splunk.com/view/vmware-virtualization/SP-CAAADPN

Friday, February 5, 2010

VI เทคนิควันนี้

ใน vi

ถ้าเราต้องการลบ ข้อมูลเป็นบรรทัด เรา ก็สั่ง dd

และถ้าเราต้องการลบ ข้อมูลหลาย ๆ บรรทัด เช่น ลบซัก 10 บรรทัด เรา ก็สั่ง 10dd

หรือ ถ้าเราต้องการลบ จากบรรทัดที่เราอยู่ ไปจนถึงท้ายไฟล์ ก็สั่ง dG

แต่ถ้า ถ้าเราต้องการลบ จากบรรทัดที่เราอยู่ ไปจนถึงต้นไฟล์ ก็สั่ง d1G