Tag: shell script

Shell Script สำหรับเช็ค Status ของ Symantec Security Information Manager

บันทึกกันลืม เรื่องมันมีอยู่ว่า ssim ที่ใช้อยู่ mount nas storage มาใช้แล้วมันเกิด error อยู่บ่อยๆ ผมเลยจำเป็นต้องเขียน shell script เพื่อตรวจสอบว่ามี service ไหนตายบ้างหรือเปล่า ถ้าตายก็ให้มัน restart service ของ ssim ทั้งหมด

ตัวอย่างคำสั่ง status เมื่อมี error นันคือมี column STATUS มี service ที่สถานะเป็น OFF หรือ column EXIT มีบรรทัดที่ไม่เป็น 0 ส่วนใหญ่จะเป็น code 143

[root@logserv ~]# status NAME PID PORT UPTIME MAXUPTIME #START STATUS EXIT sesmanager 23583 0 0d00:24 0d00:24 1 UP 0 sesevents 24705 0 0d00:23 0d00:23 1 UP 0 rxregistry 22933 55550 0d00:25 0d00:25 1 UP 0 simdbmu 29543 10030 0d00:21 0d00:21 1 UP 0 dimserver 24514 55560 0d00:24 0d00:24 1 UP 0 simserver 26829 10010 0d00:22 0d00:22 1 UP 0 icesvc 26956 55562 0d00:22 0d00:22 1 UP 0 assetsvc 24362 55557 0d00:24 0d00:24 1 UP 0 kbsvc 28853 55566 0d00:21 0d00:21 1 UP 0 querysvc 25970 55569 0d00:23 0d00:23 1 UP 0 rulesvc 25224 55559 0d00:23 0d00:23 1 UP 0 configurationsvc 23687 55571 0d00:24 0d00:24 1 UP 0 notificationsvc 25382 55558 0d00:23 0d00:23 1 UP 0 schedulersvc 28272 55561 0d00:21 0d00:21 1 UP 0 ticketsvc 26202 55567 0d00:23 0d00:23 1 UP 0 eventfindersvc 28114 55568 0d00:22 0d00:22 1 UP 0 statsvc 27757 55570 0d00:22 0d00:22 1 UP 0 wsrf 28932 0 0d00:21 0d00:21 1 UP 143 ------------------------------- IBM DB2 (PID 21815 21814 21813 21600 21599 21598) is running. ------------------------------- IBM LDAP (PID 22100) is running. ------------------------------- IBM HTTP Server (PID 22706 22705 22702 22689) is running. ------------------------------- The SSIM Agent (pid 23453) is running. -------------------------------

ตัวอย่าง script

#!/bin/bash STATUSCMD=/usr/sbin/status STATUSFILE=/tmp/ssim-status.tmp $STATUSCMD > $STATUSFILE STATUS0=$(grep 'UP\|OFF' $STATUSFILE | awk '{print $7}' | grep -v 'STATUS\|UP' | uniq) STATUS1=$(grep 'UP\|OFF' $STATUSFILE | awk '{print $8}' | grep -v '0\|EXIT' | uniq) if [ "$STATUS0" == "$STATUS1" ]; then echo "Service Health Normal" else echo "Service not normal will restart all service" /opt/Symantec/simserver/bin/stopservices.sh --all && /opt/Symantec/simserver/bin/startservices.sh --all fi

save script เป็น .sh แล้วเอาไปยัดใส่ crontab ผมตั้งไว้ให้เช็คทุก 30 เป็นอันเสร็จพิธี
หลักการทำงานคือ script จะทำการตรวจสอบว่ามี service ไหนมี status เป็น OFF หรือมี EXIT code ไม่เป็น 0 ถ้า script ตรวจพบ มันก็จะ restart service ใหม่ทั้งหมด

Share/Save

Leave a Comment December 19, 2012

วิธีเปลี่ยนชื่อเครื่อง (Hostname) บน Android 3.2 Tablet

จอร์ช : เคยมั้ยที่คุณเข้าไปใน wireless router แล้วไม่รู้ว่าเครื่อง tablet คุณคือเครื่องไหน

ซาร่า : โอ้วคุณรู้ได้ยังไงว่าฉันกำลังเจอปัญหานี้ เครื่องฉันชื่อ android_xxxxxxxxxxxxxxxx อะไรก็ไม่รู้จำย๊ากยาก

จอร์ช : วันนี้เรามีวิธีทำให้คุณจำชื่อเครื่องของคุณได้ง่ายๆ เหมือนเครื่องคอมพิวเตอร์ทั่วไป

ซาร่า : ฉันต้องทำอย่างไหรเหรอค่ะ จอร์ช

จอร์ช : ลำดับแรกเครื่องคุณต้อง root ก่อน นะจ๊ะ

ซาร่า : ใช่ เครื่องฉัน root แล้วค่ะ ฉันต้องทำอย่างไรต่อ

จอร์ช : ผมแนะทำให้คุณติดตั้ง busybox เข้าไปด้วยเครื่องคุณจะได้ใช้คำสั่งได้เพิ่มขึ้น

ซาร่า : busybox ฉันก็ลงแล้วนะ

จอร์ช : เยี่ยมไปเลย มาว่ากันต่อ คุณต้องติดตั้งโปรแกรม Script Manager – SManager เพิ่มเข้าไปเพื่อใช้สั่งรัน shell script ที่เรากำลังจะเขียน

ซาร่า : ได้ค่ะฉันติดตั้งแล้วเหมือนกัน Shell Script มันคืออะไรเหรอค่ะ คุณจอร์ช

จอร์ช : Shell Script มันก็คือชุดคำสั่ง Script ที่ใช้รันให้โปรแกรมทำงานตามที่เรากำหนดไว้ ซึ่งในที่นี้เราจะเขียน Shell Script สำหรับเปลี่ยนชื่อ Hostname นั้นเอง

ซาร่า : แต่ฉันเขียนโปรแกรมไม่เป็นเลยนะ ฉันจะทำได้มั้ยเนี่ย

จอร์ช : โอ้วมันง่ายมากเลย ซาร่า ผมเขียนไว้ให้คุณเรียบร้อยแล้ว คุณเพียงแค่ดาวน์โหลด มันไปจาก Link นี้เท่านั้นเอง >> chhostname.sh ดาวน์โหลดเสร็จแล้วคุณก็ใช้พวกโปรแกรม Editor แก้ไขไฟล์นี้โดยแก้บรรทัด devName=my-tablet แก้จาก my-tablet เป็นชื่อเครื่องที่คุณอยากจะตั้ง(ห้ามมี space) โดยเนื้อหาของ Script ก็จะมีประมาณนี้

#!/system/bin/sh #change devName to whatever you want. devName=my-tablet if [ "$(/system/xbin/hostname)" = "$devName" ] && [ "$(getprop net.hostname)" = "$devName" ] then echo "Device hostname does not need to be changed." else echo "Device hostname is being changed to $devName." /system/xbin/hostname $devName setprop net.hostname $devName if [ "$(/system/xbin/hostname)" != "$devName" ] && [ "$(getprop net.hostname)" != "$devName" ] then echo "Device hostname has not been changed." else echo "Device hostname has been successfully changed." fi fi

หลังจากแก้เสร็จแล้วผมแนะนำให้คุณเอาไปไว้ที่ /system/etc

ซาร่า : ฉันจะเอาไฟล์ chhostname.sh ที่คุณให้ดาวน์โหลดไปไว้ที่ /system/etc ได้ยังไงละ

จอร์ช : มันไม่ได้ยากอย่างที่คุณคิด เพียงคุณใช้โปรแกรม ES File Explorer โดยไปที่เมนู Settings ของโปรแกรมจากนั้นเลือกที่ Up to Root คุณก็จะสามารถเข้าไปยัง /system/etc ได้

ซาร่า : ฉันคิดว่าฉันน่าจะพอทำได้นะ แล้วฉันต้องทำยังไงต่อ

จอร์ช : เมื่อคุณนำไฟล์ chhostname.sh ไปไว้ที่ /system/etc ได้แล้ว คุณก็เปิดโปรแกรม Script Manager ขึ้นมากแล้ว Browse ไปยังตำแหน่งไฟล์ /system/etc/chhostname.sh จากนั้นเลือก is script ซึ่งปกติมันก็จะเลือกให้อยู่แล้ว เลือกรันด้วย root และให้มันรันตอน boot ด้วย จากนั้นก็กดที่ปุ่ม Run
ถ้า script ทำงานได้มันก็จะบอกคุณว่า

“Device hostname has been successfully changed.”

โอ้วแย่แค่นี้เอง ที่นี้คุณก็ลองปิดและเปิดเครื่องดูใหม่ ถ้าคุณอยากรู้ว่าชื่อเครื่องมันเปลี่ยนไปจริงหรือเปล่าคุณก็แค่ใช้พวกโปรแกรม Terminal อย่างเช่น ConnectBot เลือก connect แบบ localhost เข้าไปได้แล้วก็ใช้คำสั่ง

su

จากนั้นก็สั่ง

hostname

มันจะแสดงชื่อ hostname ที่เราเปลี่ยน อยากให้ชัวก็ใช้คำสั่ง

getprop net.hostname

ดูอีกทีแค่นี้เอง ซาร่า

ซาร่า : แล้วฉันจะลองทำดูนะค่ะ จอร์ช ขอบคุณมากเลย

จอร์ช : ด้วยความยินดีครับคุณผู้หญิง

ข้อมูลอ้างอิง : http://forum.xda-developers.com/showthread.php?t=1447930 และ http://forum.xda-developers.com/showthread.php?t=1366934

Leave a Comment June 11, 2012

Tweeting แบบดิบๆ ผ่าน Linux Command Line

เมื่อกี้เข้า linuxtoday.com ไปเจอทิปเด็ดๆ ใน junauza.com เรื่อง Follow Me: Tweeting from the Linux Command Line อ่านแล้วน่าสนใจดี และหลังจากลองแล้วก็ได้ผลครับเลยนำมาบอกต่อ

ขั้นตอนเขามีอยู่ว่า
1. ติดตั้ง curl

mrgill@mrgill-laptop:~$ sudo apt-get install curl

2. สร้างไฟล์ชื่อ twitter ไว้ใน /usr/bin/ ด้วย text editor ที่ชอบในตัวอย่างเขาใช้ gedit แต่ผมชอบ nano

mrgill@mrgill-laptop:~$ sudo nano /usr/bin/twitter

จากนั้นนำโค้ดด้านล่างไปวาง

curl --basic --user "yourusername:yourpasswd" --data-ascii "status=`echo $@|tr ' ' '+'`" "http://twitter.com/statuses/update.json" -o /dev/null; echo Message Sent!

*อย่าลืมเปลี่ยน yourusername กับ yourpasswd เป็นของ twitter ของคุณ (กด Ctrl + O เพื่อบันทึก และกด Ctrl + X เพื่อออก)

3. กำหนดสิทธิ์ให้ /usr/bin/twitter สามารถรันได้
(more…)

1 Comment December 30, 2009

Shell Script แจ้งเตือน SMS เมื่อ Hard Disk ใกล้เต็มแบบฟรีๆ

สวัสดีครับต่อยอดจากเรื่อง Server Down รู้ได้ทันทีผ่าน SMS แถมฟรี ที่เขียนไว้วันก่อน วันนี้เอามาประยุกต์ให้ script เช็คสถานะของ hard disk ครับโดยให้ส่ง sms เตือนเมื่อมีการใช้งาน partition ใดๆ เกิน 90%
มาดูตัว code ของ script กันครับ

#!/bin/sh # Simple SHELL script for Linux and UNIX system monitoring with # df command # ------------------------------------------------------------------------- # Copyright (c) 2009 mrGilL # This script is licensed under GNU GPL version 2.0 or above # ------------------------------------------------------------------------- # Setup SMS User below # See URL for more info: # http://imrgill.com/2009/12/13/monitor-server-with-sms-alert-shell-script/ # ------------------------------------------------------------------------- # Hard type (hdx,sdx,scx) HDD_TYPE="sd" # Partition lists PLIST=`df -h | grep $HDD_TYPE | awk '{ print $1 }' | sed -e 's/\/dev\///g'` # Setting SMS User (Gmail) GCUSER="user@gmail.com" GCPASSWD="gmail-passwd" for p in $PLIST do disk=$(df -h | grep $p | awk '{ print $5 }' | sed -e 's/\%//g') pname=$(df -h | grep $p | awk '{ print $6 }') if [ $disk -ge 90 ]; then # disk less than 90% wget --force-html --recursive --no-check-certificate -nd --delete-after "https://imrgill.com/google_sms/gsms.php?username=$GCUSER&password=$GCPASSWD&title=$(hostname) partition $pname < 90%" fi done

วิธีนำไปใช้

1. แก้ไข HDD_TYPE เป็นประเภท hard disk ที่คุณใช้ ดูได้จากคำสั่ง fdisk -l หรือ df ผลลัพธ์ที่ได้จะประมาณ /dev/sda ตัวอย่างผมได้ sda ให้ใส่เป็น HDD_TYPE=”sd”

[mrgill@Webserver ~]$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 59515556 1260296 55183232 3% / /dev/sda8 11710104 2895576 8210084 27% /usr /dev/sda7 1019208 37992 928608 4% /tmp /dev/sda6 109109796 9092520 94385292 9% /var /dev/sda5 287660612 11604092 261208448 5% /home /dev/sda1 101086 33812 62055 36% /boot tmpfs 517284 0 517284 0% /dev/shm

*เหตุผลที่ไม่ใส่ sda ไปตรงๆ เลยก็เพราะ กรณีมี hard disk หลายลูกเช่น sda, sdb ทำให้ script ไม่สามารถตรวจสอบ hard disk ที่เป็น sdb ได้

2. แก้ไข GCUSER และ GCPASSWD เป็น user gmail ของเรา

3. กำหนดสิทธิ์ให้สามารถรันได้

[root@Webserver ~]$ chmod +x observman_disk.sh

4. นำ script ไปใส่ /etc/cron.daily/ เพื่อให้ script ทำงานทุกวัน

[root@Webserver ~]$ cp observman_disk.sh /etc/cron.daily/

หรือใครจะนำไปใส่ใน crontab ก็ไม่ว่ากัน

[root@Webserver ~]$ crontab -e
# m h dom mon dow command @daily /root/observman_disk.sh > /dev/null

หวังว่าบทความนี้คงเป็นประโยชน์ต่อผู้อ่าน

4 Comments December 13, 2009

Server Down รู้ได้ทันทีผ่าน SMS แถมฟรีด้วย

 

update 2015 ตอนนี้ google ยกเลิกนโยบายส่ง sms เข้ามือถือแล้วครับ เพราะ smart phone เป็นที่แพร่หลาย

update 27/09/2012 ครับ เนื่องด้วยมีผู้ใช้งาน script ผ่าน blog ของผมเป็นจำนวนมากทำให้ cpu ของเครืื่อง server hosting ทำงานหนักผมจึงขอเอาไฟล์ gsms.php ออกจาก blog นะครับใครต้องการใช้ script สามารถโหลดเอาไปติดตั้งกันได้เองตามตอนท้ายบทความได้เลยครับ

ีupdate status 06/03/2012 script ยังใช้งานได้ครับ

ก่อนอื่นขอหาวยาวๆ ก่อนกล่าวสวัสดีท่านผู้อ่านทุกท่าน  เมื่อคืนบ้าพลังอะไรไม่รู้อยากเขียน script ส่ง sms เตือนเมื่อ server down ที่จริงชาวบ้านเค้าก็ทำขายกันเยอะแยะ แต่หลังจากที่ผมได้ใช้ Google Calendar แล้วให้มันส่ง sms เตือนแถมฟรีอีก ก็เลยคิดอยากใช้ประโยชน์จากมันเพิ่มเติมก็ค้นๆ  Google อีกเช่นเคยครับ ไปเจอบทความใน ThaiAdmin เรื่อง google calendar sms ที่ท่าน smartsoft เขียนไว้ก็เลยลองโหลด Libraries Google Calendar SMS มาเล่นดูบ้าง ซึ่งเมื่อลองดูแล้วก็ถือว่าใช้งานง่ายทีเดียวเลยเอามาโมต่อ โดยให้ Shell Script เป็นตัว Submit form แทน

ความสามารถของ Script

1. ส่ง sms แจ้งเตือนเมื่อ ping ไม่เจอ server
2. เก็บ log ในตัว เพราะทุกครั้งที่มันส่ง sms มันจะไปเพิ่ม Event ใน Google Calendar ทำให้เราเข้าไปตรวจสอบย้อนหลังได้
3. ไม่ต้องเสียเงินค่าส่ง SMS แม้แต่น้อย (พี่ Google เค้าใจดี)

มาดูขั้นตอนการทำกัน

ก่อนอื่นเราก็ต้องไป Verify เบอร์มือถือใน Google Calendar ก่อนครับ ขออนุญาตท่าน smartsoft ทำรูปใหม่นะครับ
1. ขั้นแรก ล็อกอินเข้า Google Calendar http://www.google.com/calendar ก็ใช้ User ของ Gmail นั้นแหละครับ
ล็อกอินแล้วคลิกที่ Settings เพื่อไปปรับเมนูให้เป็นภาษาไทย (หากใครเป็นภาษาไทยอยู่แล้วข้ามไปขั้นตอนต่อไปได้เลย)

คลิก Settings

2. เลือก Language ให้เป็น ภาษาไทย แล้วกด Save

เลือก ภาษาไทย

(more…)

65 Comments December 11, 2009


Recent Entries

Random Posts

Social Network

Tag Cloud

Calendar

May 2017
S M T W T F S
« Jun    
 123456
78910111213
14151617181920
21222324252627
28293031  

Twitter: imrgill

RSS LinuxToday

RSS HowToForge

RSS UbuntuClub

RSS Blognone

RSS PowerWindowsBlog

Tag

Categories

Archives

Blogroll