ที่มาของปัญหา
เนื่องจากเป็น System Admin ซึ่งในหน่วยงานที่รับผิดชอบมี Servers หลายพันเครื่องเลยที่เดียว ดังนั้นปัญหาที่เกิดขึ้นคือจะทำยังไงให้ใน shell script อันเดียวสามารถใช้ทำงานในทุก OS ได้ เพราะว่าในหน่วยงานที่รับผิดชอบมีความหลากหลายมากดังนี้ HU-UX HPE, Sun Solaris ,AIX ของ IBM, Linux Redhat, Linux SUSE และ Linux Ubuntu ซึ่งทำให้เวลาที่ developer script อันเดียวกันที่จะทำการตรวจสอบข้อมูลไม่สามารถทำได้ภายใน script เดียว ทำให้ต้องทำเฉพาะ OS ของแต่ละ vendor ซึ่งการใช้งานก็ยุ่งยากเพราะจะมี script เพิ่ม เป็น 3-4 เท่าโดยประมาณ
การแก้ปัญหา
ทางดูแลระบบจึงได้ทำการ develop script ง่ายๆ สำหรับตรวจ OS ก่อน ทำการ run script โดยใน script ที่ยกตัวอย่างเป้นเพียงยกตัวอย่างง่ายๆ นะครับ โดยการ ตรวจสอบ OS host ก่อน แล้วถึงจะทำ script ตาม OS ซุึ่งทำให้เหลือแค่ 1 script

ตั้งชื่อเป็น uptime.sh

#!/bin/ksh
set -x
Hostname=`uname -n`
Today=`date +%Y%m%d`
HostOS=`uname -s`

Logerror="/log/`hostname`.error.${Today}"
SunOS_act()
    {
    uptime >> ${Logerror}
    }
AIX_act()
    {
    uptime >> ${Logerror}
    }
Linux_act()
    {
    uptime >> ${Logerror}                                                                                                                    
     }
     
case ${HostOS} in 
     SunOS)
        SunOS_act
     ;;
     AIX)
        AIX_act
        ;;
    Linux)
        Linux_act
        ;;
    esac
Facebook Comments