ที่มาของปัญหา
เนื่องจากเป็น 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