Month: March 2013

  • shell script for download virtualbox packages Part 2

    หลังจาก เกริ่นนำ เสียยืดยาว แต่ ยังไม่เข้าสู่เนื้อหาใน ภาคแรก
    ก็ขอเอามาต่อภาคสองที่นี่ …
    ความเดิมตอนที่แล้ว โจทย์มีอยู่ว่า

    เราต้องการ download package ของ virtualbox ตัวล่าสุด และต้องการไฟล์ package สำหรับ
    1. Windows
    2. Ubuntu โดยแยกเป็น
    2.1 Ubuntu 12.04 — precise pangolin
    2.2 Ubuntu 12.10 — quantal quetzal
    ทั้งสอง revision ต้องการ package สำหรับทั้ง i386 และ amd64 architecture
    3. Extension pack
    4. User manual
    5. ไฟล์ MD5SUMS สำหรับตรวจสอบไฟล์ ที่ download มา

    โดยไฟล์ทั้งหมดจะเก็บอยู่ใน http://download.virtualbox.org/virtualbox/$version
    ส่วนของตัวเลข $version นั้นเรามีวิธีการที่จะใช้ script ในการอ่านค่านั้นมาโดยอัตโนมัติเอาไว้แล้ว ใน ตอนแรกของบทความ ชุดนี้ (เรียกซะเป็นชุด แต่จริงๆแล้วก็มีแค่ 2 เท่านั้นแหละครับ)

    ไฟล์ที่ต้องการจริงๆนั้นมีอะไรบ้าง?
    1. Windows
    http://download.virtualbox.org/virtualbox/4.2.8/VirtualBox-4.2.8-83876-Win.exe
    2. Ubuntu
    2.1 Ubuntu 12.04 มี 2 file สำหรับ 2 architecture
    http://download.virtualbox.org/virtualbox/4.2.8/virtualbox-4.2_4.2.8-83876~Ubuntu~precise_amd64.deb
    http://download.virtualbox.org/virtualbox/4.2.8/virtualbox-4.2_4.2.8-83876~Ubuntu~precise_i386.deb

    เอาเท่านี้ก่อน … จะเห็นว่า URL ที่จะใช้ในการเข้าถึงไฟล์นั้น จะซับซ้อนพอดู
    ส่วนแรกที่เหมือนกัน ก็คือ URL ที่ระบุไปถึง directory และ version คือ

    http://download.virtualbox.org/virtualbox/4.2.8/

    จะเหมือนกัน แต่หลังจากนั้น ส่วนของไฟล์จะได้เป็น

    VirtualBox-4.2.8-83876-Win.exe
    virtualbox-4.2_4.2.8-83876~Ubuntu~precise_amd64.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~precise_i386.deb

    และไฟล์ของ Ubuntu 12.10

    virtualbox-4.2_4.2.8-83876~Ubuntu~quantal_amd64.deb
    virtualbox-4.2_4.2.8-83877~Ubuntu~quantal_i386.deb

    นั่นแน่ะ ตัวเลข release เฉพาะของ Ubuntu 12.10 เองก็ยังต่างกัน ระหว่าง amd64 (83876) กับ i386 (83877) อีกต่างหาก ถ้าจะระบุชื่อเองโดยหาข้อมูล version/sub version/release บวกกับ architecture บวกกับการตั้งชื่อที่แตกต่างกัน (ตัวเล็ก/ใหญ่ ของชื่อ VirtualBox ระหว่าง Windows กับ Ubuntu) ก็คงจะได้ script ที่ซับซ้อนน่าดู

    Crying

    แต่จริงๆแล้วมีวิธีการที่ง่ายกว่านั้น

    ก่อนอื่นเรามา list ไฟล์ที่มีอยู่ออกมาดูกันก่อน เราสามารถใช้คำสั่ง

    wget -q -O- http://download.virtualbox.org/virtualbox/4.2.8/

    ก็จะเห็น ข้อมูลของหน้า download อยู่ใน format ของ html มีขยะอะไรที่เราไม่ต้องการเยอะแยะไปหมด เราต้องการเฉพาะบรรทัดที่อ้างถึงไฟล์ที่เราสามารถเอามาใช้ download ได้ ลองสังเกตดู เราก็จะเห็นว่า บรรทัดเหล่านั้นจะเริ่มบรรทัดด้วย ‘<A HREF=’ … งั้นเอาละ เราก็กรองมาเฉพาะบรรทัดเหล่านั้น

    wget -q -O- http://download.virtualbox.org/virtualbox/4.2.8/ | grep '^<A HREF'

    สวยงามขึ้น … แต่เราต้องการเฉพาะชื่อไฟล์ ไม่ได้ต้องการ html format ทั้งบรรทัด ในกรณีนี้ ส่วนที่เราต้องการอยู่ระหว่างเครื่องหมาย double qoute (“) คู่แรก ซึ่งเราใช้คำสั่ง cut ช่วยแยกสิ่งที่เราต้องการออกมาได้ โดยเพิ่มคำสั่งเป็น

    wget -q -O- http://download.virtualbox.org/virtualbox/4.2.8/ | grep '^<A HREF' | cut -f2 -d\"

    ผลลัพธ์คือ

    /virtualbox/
    MD5SUMS
    Oracle_VM_VirtualBox_Extension_Pack-4.2.8-83876.vbox-extpack
    Oracle_VM_VirtualBox_Extension_Pack-4.2.8.vbox-extpack
    SDKRef.pdf
    SHA256SUMS
    UserManual.pdf
    VBoxGuestAdditions_4.2.8.iso
    VirtualBox-4.2-4.2.8_83876_el4-1.i386.rpm
    VirtualBox-4.2-4.2.8_83876_el5-1.i386.rpm
    VirtualBox-4.2-4.2.8_83876_el5-1.x86_64.rpm
    VirtualBox-4.2-4.2.8_83876_el6-1.i686.rpm
    VirtualBox-4.2-4.2.8_83876_el6-1.x86_64.rpm
    VirtualBox-4.2-4.2.8_83876_fedora16-1.i686.rpm
    VirtualBox-4.2-4.2.8_83876_fedora16-1.x86_64.rpm
    VirtualBox-4.2-4.2.8_83876_fedora17-1.i686.rpm
    VirtualBox-4.2-4.2.8_83876_fedora17-1.x86_64.rpm
    VirtualBox-4.2-4.2.8_83876_fedora18-1.i686.rpm
    VirtualBox-4.2-4.2.8_83876_fedora18-1.x86_64.rpm
    VirtualBox-4.2-4.2.8_83876_mdv2010.0-1.i586.rpm
    VirtualBox-4.2-4.2.8_83876_mdv2010.0-1.x86_64.rpm
    VirtualBox-4.2-4.2.8_83876_mdv2011.0-1.i586.rpm
    VirtualBox-4.2-4.2.8_83876_mdv2011.0-1.x86_64.rpm
    VirtualBox-4.2-4.2.8_83876_openSUSE114-1.i586.rpm
    VirtualBox-4.2-4.2.8_83876_openSUSE114-1.x86_64.rpm
    VirtualBox-4.2-4.2.8_83876_sles10.1-1.i586.rpm
    VirtualBox-4.2-4.2.8_83876_sles10.1-1.x86_64.rpm
    VirtualBox-4.2-4.2.8_83876_sles11.0-1.i586.rpm
    VirtualBox-4.2-4.2.8_83876_sles11.0-1.x86_64.rpm
    VirtualBox-4.2.8-83876-Linux_amd64.run
    VirtualBox-4.2.8-83876-Linux_x86.run
    VirtualBox-4.2.8-83876-OSX.dmg
    VirtualBox-4.2.8-83876-SunOS.tar.gz
    VirtualBox-4.2.8-83876-Win.exe
    VirtualBox-4.2.8.tar.bz2
    VirtualBoxSDK-4.2.8-83876.zip
    virtualbox-4.2_4.2.8-83876~Debian~squeeze_amd64.deb
    virtualbox-4.2_4.2.8-83876~Debian~squeeze_i386.deb
    virtualbox-4.2_4.2.8-83876~Debian~wheezy_amd64.deb
    virtualbox-4.2_4.2.8-83876~Debian~wheezy_i386.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~hardy_amd64.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~hardy_i386.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~lucid_amd64.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~lucid_i386.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~natty_amd64.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~natty_i386.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~oneiric_amd64.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~oneiric_i386.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~precise_amd64.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~precise_i386.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~quantal_amd64.deb
    virtualbox-4.2_4.2.8-83877~Ubuntu~quantal_i386.deb

    สวยงามยิ่งกว่าเดิม … มี directory ที่เราไม่ต้องการโผล่มา 1 คือ “/virtualbox/” ซึ่งสามารถใช้ grep -v เพื่อทิ้งไปได้ แต่สำหรับกรณี ไม่จำเป็น

    จากไฟล์ที่ list ออกมา ถ้าพิจารณาดูหน่อยนึง เราก็จะเห็นว่า งานที่เราจำเป็นจะต้องทำ ไม่ต้องไปสร้าง ชื่อของไฟล์ให้ยุ่งยากซับซ้อนเกินไปก็ได้ เพราะใน list ที่เรามีอยู่ เราสามารถเลือก “grep” ส่วนที่เราต้องการได้เลย เช่น ไฟล์ package สำหรับ ubuntu 12.04 ก็สามารถเลือก grep โดยใช้ string “precise” ได้เลยเช่น

    wget -q -O- http://download.virtualbox.org/virtualbox/4.2.8/ | grep '^<A HREF' | cut -f2 -d\" | grep "precise"

    ก็จะได้ผลลัพธ์เป็น

    virtualbox-4.2_4.2.8-83876~Ubuntu~precise_amd64.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~precise_i386.deb

    ถ้าต้องการ ubuntu 12.10 ด้วยล่ะ ก็เพิ่ม option -E สำหรับคำสั่ง grep และเปลี่ยน string ที่จะใช้ grep นิดหน่อยเป็น “precise|quantal” ก็จะได้คำสั่งเป็น

    wget -q -O- http://download.virtualbox.org/virtualbox/4.2.8/ | grep '^<A HREF' | cut -f2 -d\" | grep -E "precise|quantal"

    และได้ผลลัพธ์เป็น

    virtualbox-4.2_4.2.8-83876~Ubuntu~precise_amd64.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~precise_i386.deb
    virtualbox-4.2_4.2.8-83876~Ubuntu~quantal_amd64.deb
    virtualbox-4.2_4.2.8-83877~Ubuntu~quantal_i386.deb

    อะฮ่า … งดงามเป็นอย่างยิ่ง โดยใช้ trick เดียวกันเราก็จะได้คำสั่ง สำหรับ “เลือก”ไฟล์ที่เราต้องการทั้งหมด ได้เป็น

    wget -q -O- http://download.virtualbox.org/virtualbox/4.2.8/ | grep '^<A HREF=' | cut -f2 -d\" | grep -E "Win|precise|quantal|MD5SUM|UserManual|Extension_Pack"

    โอเค คราวนี้เราก็พร้อมที่จะดัดแปลงมันเป็น shell script สำหรับการ download VirtualBox package ที่เราต้องการแล้วละครับ โดยส่ง list รายการของไฟล์ทั้งหมดไปเก็บไว้ในตัวแปร แล้วก็ใช้การวน loop download มาทีละไฟล์ประมาณนี้ครับ

    #!/bin/sh
    
    VERS="4.2.8"
    VBOXDL="http://download.virtualbox.org/virtualbox/$VERS"
    LIST=`    wget -q -O- $VBOXDL                        |\
        grep '^<A HREF='                        |\
        cut -f2 -d\"                            |\
        grep -E "Win|precise|quantal|MD5SUM|UserManual|Extension_Pack"    |\
        grep -v "Extension_Pack-${VERS}-"                `
    
    for file in $LIST; do
        wget ${VBOXDL}/${file}
    done

    บรรทัด grep -v “Extension_Pack-${VERS}-” ที่เพิ่มขึ้นมาก็เพื่อตัดให้เหลือไฟล์ extension pack ที่ต้อง download เพียงไฟล์เดียว เพราะทั้งสองไฟล์ถึงจะมีชื่อไฟล์ต่างกัน แต่จริงๆแล้วก็เป็นไฟล์เดียวกันครับ

    งานส่วนที่เหลือก็คือ รวมเอา script ในตอนแรก ที่ใช้ในการหา $VERS แบบอัตโนมัติ มารวมอยู่ใน script เดียวกันนี้ เพื่อว่าจะได้ไม่จำเป็นจะต้องมาเปลี่ยนหมายเลข version ใหม่ทุกครั้ง ก่อนที่จะ download
    หรือถ้าจะให้ดียิ่งไปกว่านั้น ก็คือ ให้ script download ไฟล์ทั้งหมดมาโดยอัตโนมัติ และ ส่ง email แจ้งว่า ได้ download ไฟล์ทั้งหมดมาเรียบร้อยแล้ว

    อันนี้ ทิ้งไว้เป็นโจทย์ ให้ลองหัดทำกันดูเก็แล้วกันนะครับ

    ถ้ามีปัญหาแก้ไม่ได้ ก็ขอให้ comment มาครับ เผื่อว่า ผมจะได้ idea สำหรับเขียน blog ใหม่เพิ่ม เพราะว่า ถ้าปล่อยให้คิดเอง ก็คิดไม่ออกเหมือนกัน (ฮา)

    สุดท้ายนี้ ขอขอบคุณเจ้าของ email ต้นเรื่องนะครับ ที่ทำให้ผมเขียน blog เพิ่มขึ้นได้อีก 2 บทความ ถ้าไม่ได้คำถามดีๆ ผมก็ไม่มีอะไรให้เขียนจริงๆครับ ขอบคุณอีกครั้งครับ

  • shell script for download virtualbox packages

    หลังจากบรรยายเรื่อง Shell script ไปในสัปดาห์ที่แล้ว ด้วยหัวข้อเรื่องที่มีอยู่ค่อนข้างเยอะกว่าที่คิดไว้ และใช้เวลาบรรยายไปอย่างไม่ค่อยมีประสิทธิภาพสักเท่าไหร่ ทำให้เนื้อเรื่องบางส่วน ต้องทิ้งเอาไว้ ไม่ได้พูดต่อให้จบ ปล่อยคนที่เอา slide มาอ่านงงไปก็แล้วกันว่า มันคือเรื่องอะไรกัน

    เรื่อง slide ก็ … เหอะ … เดี๋ยวมีโอกาส ค่อยกลับไปปรับปรุงมันอีกที ผมยังพอมี idea อยู่บ้างว่าจะแก้ไขมันยังไง แต่เรื่องหนึ่งซึ่งจริงๆแล้ว มีปัญหาตั้งแต่ก่อนเริ่มบรรยายแล้วว่า จะยกตัวอย่างโจทย์ปัญหาอย่างไรดี ที่จะทำให้เห็น วิธีการที่ผมใช้ในการ “เขียน” shell script ตัวนึงออกมาได้ ตัวอย่างที่ยกให้ดูในตอนแรกของ การบรรยาย เป็นแค่ตัวอย่างหลอกๆ ที่เขียนไปเพื่อให้เห็น รูปแบบ ของการใช้ shell script แต่จะว่าไป ที่ผมใช้งานอยู่ปัจจุบัน ก็ไม่ได้ตัวอย่างที่ว่านั่น จะใช้ตัวอย่างอื่นที่มี ตัวอย่างเช่น psuautosigned ก็คงต้องอธิบายในเรื่องอื่นกันยาว ก่อนที่จะวกกลับมาที่เรื่องของ shell script ได้

    จนกระทั่งวันนี้ ได้รับ email ฉบับนี้มา

    > อาจารย์ครับ
    >    มีเรืองปรึกษครับ
    >
    > สิ่งที่ต้องการคือ wget file หลายๆ  file ตามข้างล่างนี้
    > wget
    > http://download.virtualbox.org/virtualbox/${version1}/VirtualBox-${version1}-83876-Win.exe
    > wget
    > http://download.virtualbox.org/virtualbox/${version1}/virtualbox-4.2_${version1}-83877~Ubuntu~quantal_i386.deb
    > wget
    > http://download.virtualbox.org/virtualbox/${version1}/virtualbox-4.2_${version1}-83876~Ubuntu~quantal_amd64.deb
    > wget
    > http://download.virtualbox.org/virtualbox/${version1}/virtualbox-4.2_${version1}-83876~Ubuntu~precise_i386.deb
    > wget
    > http://download.virtualbox.org/virtualbox/${version1}/virtualbox-4.2_${version1}-83876~Ubuntu~precise_amd64.deb
    > wget http://download.virtualbox.org/virtualbox/${version1}/MD5SUMS
    > wget
    > http://download.virtualbox.org/virtualbox/${version1}/Oracle_VM_VirtualBox_Extension_Pack-${version1}-83876.vbox-extpack
    > wget http://download.virtualbox.org/virtualbox/${version1}/UserManual.pdf
    >
    > ผมเขียน  script แบบนี้
    > version1=4.2.8
    > url1=http://download.virtualbox.org/virtualbox/${version1}
    > for i in Win  quantal  precise Oracle MD5 User
    >     do
    >        wget  ${url1}/*{i}*
    >    done
    > ไม่ work ครับ
    > ขอคำแนะนำด้วยครับ

    ผมตอบกลับไปว่า

    |        ใช้ *{i}* หรือ *${i}* ไม่ได้ครับ เพราะ * ที่ใช้บน command line
    |        ปกติ จะเป็นตัวอักษรที่ตีความโดย shell ที่เราใช้งานอยู่ ซึ่งโดยทั่วไป
    |        มันก็จะพยายาม match กับ ชื่อไฟล์ ใน directory บนเครื่องของเราครับ
    |
    |        ทีนี้ ตอนท่ีส่งให้กับ wget ถ้า shell ไม่สามารถ expand ตัว * ออกมาเป็น
    |        ไฟล์ได้ มันก็จะส่ง * ไปยังเครื่องปลายทาง ซึ่งก็จะเปรียบเทียบแบบ literal
    |        คือเป็นตัวอักษร * โดยตรงโดยไม่ได้พยายาม match กับไฟล์ที่มีอยู่ใน
    |        directory นั้นๆ
    |
    |        วิธีการหนึ่งที่อาจจะใช้สำหรับการ download ทั้งหมดมาได้ ก็คือใช้ option -r
    |        แต่ว่านั่นก็จะได้ไฟล์ ที่เราไม่ต้องการมาอีกหลายๆไฟล์
    |
    |       สำหรับกรณีนี้ วิธีการที่ สามารถใช้ในการแก้ปัญหาได้ก็คือ อ่าน list ของไฟล์
    |       ที่มีอยู๋ทั้งหมดมาก่อน แล้วค่อยมาเลือกชื่อไฟล์ที่เราต้องการ เอามาเก็บไว้ใน
    |       list ที่เราต้องการ download อีกรอบนึง ครับ
    |
    |       อันที่จริงแล้ว นี่เป็นคำถามที่ดีมาที่จะใช้ยกตัวอย่างในเรื่องของการใช้งาน
    |       shell script เลยทีเดียวครับ
    |
    |       ผมกำลังหา หัวข้อเรื่องที่เหมาะสมสำหรับเขียนเป้น blog ลงใน psu sysadmin
    |       พอดีเลยครับ ผมขอเอาคำตอบไปตอบในโน้นนะครับ

    จริงๆแล้วแอบร้องยูเรก้าอยู่ในใจ เพราะนี่แหละสิ่งที่ผมต้องการ ไม่ต้องรอคำอนุญาตจากเจ้าของ email ผมก็รีบเอามา post ที่นี่ทันทีถ้าไม่มีคำถามดีๆ ผมก็ไม่มีไอเดีย อะไรที่จะเอามาเขียนเป็น blog เหมือนกันครับ ของคุณเจ้าของ email ที่ส่งมาถามเป็นอย่างมากเลยครับขอเริ่มจากอธิบายโจทย์ใหม่อีกสักรอบก่อนนะครับโจทย์ คือต้องการที่จะ download package ของ virtualbox ใหม่ล่าสุดที่มีอยู่บน site ของ virtualbox มาเก็บไว้ที่ local เพื่อให้การติดตั้ง package บนเครื่องคอมพิวเตอร์ในเครือข่าย ซึ่งมีอยู่หลายเครื่อง จะได้ไม่ต้องไป download มาสำหรับแต่ละเครื่องให้เปลือง bandwidthถ้าหากว่า เครื่องคอมพิวเตอร์ที่ใช้ เป็น Linux และติดตั้ง Ubuntu Linux หรือ Debian Linux และต้องการ
    VirtualBox ตัวที่ทันสมัย แต่ไม่ถึงกับต้องการตัว “ล่าสุด” จริงๆ ปัญหานี้ก็สามารถแก้ได้ง่ายๆ โดยติดตั้ง
    Virtualbox บนเครื่อง โดยการใช้คำสั่ง

    sudo apt-get install virtualbox

    ซึ่งบนเครื่อง Debian Wheezy ที่ผมใช้งานอยู่ปัจจุบัน ก็จะมี Virtualbox 4.1.8 ให้ใช้ติดตั้งได้เลย โดยไม่ต้อง download มาจาก website ของ virtualbox

    แต่ถ้าต้องการ virtualbox version ล่าสุด ซึ่ง version stable ล่าสุด ซึ่งประกาศ release อยู่บน website ของ virtualbox (ณ วันนี้ 6 มีค. 2556) คือ 4.2.8 ซึ่งก็ … อะ แฮ่ม … ต่างกันไม่มากเท่าไหร่

    แต่ถ้าต้องการ version ล่าสุด หรือ package สำหรับ Windows หรือ Mac OSX ด้ว ก็คงต้องใช้วิธีการ download มาจาก website ของ virtualbox โดยตรงจาก https://www.virtualbox.org/wiki/Downloads ครับ

    กลับมาที่ โจทย์ ต่อ

    เราต้องการ download package ของ virtualbox ตัวล่าสุด และต้องการไฟล์ package สำหรับ
    1. Windows
    2. Ubuntu โดยแยกเป็น
    2.1 Ubuntu 12.04 — precise pangolin
    2.2 Ubuntu 12.10 — quantal quetzal
    ทั้งสอง revision ต้องการ package สำหรับทั้ง i386 และ amd64 architecture
    3. Extension pack
    4. User manual
    5. ไฟล์ MD5SUMS สำหรับตรวจสอบไฟล์ ที่ download มา

    ไฟล์ของ virtualbox ซึ่งสร้างเป็น link ไว้ ในหน้า download จะเก็บอยู่บน http://download.virtualbox.org/virtualbox/4.2.8/ สำหรับ version 4.2.8

    ซึ่งถ้าเรา list มาดูจะได้ ประมาณนี้

    [DIR]  Parent Directory
    [   ]  MD5SUMS                                                          01-Mar-2013 02:11     3K    
    [   ]  Oracle_VM_VirtualBox_Extension_Pack-4.2.8-83876.vbox-extpack     27-Feb-2013 12:56    10M    
    [   ]  Oracle_VM_VirtualBox_Extension_Pack-4.2.8.vbox-extpack           27-Feb-2013 12:56    10M    
    [   ]  SDKRef.pdf                                                       27-Feb-2013 12:55     2M    
    [   ]  SHA256SUMS                                                       01-Mar-2013 02:12     5K    
    [   ]  UserManual.pdf                                                   27-Feb-2013 12:55     5M    
    [BIN]  VBoxGuestAdditions_4.2.8.iso                                     27-Feb-2013 13:00    54M    
    [   ]  VirtualBox-4.2-4.2.8_83876_el4-1.i386.rpm                        27-Feb-2013 12:45    82M    
    [   ]  VirtualBox-4.2-4.2.8_83876_el5-1.i386.rpm                        27-Feb-2013 12:45    81M    
    [   ]  VirtualBox-4.2-4.2.8_83876_el5-1.x86_64.rpm                      27-Feb-2013 13:01    81M    
    [   ]  VirtualBox-4.2-4.2.8_83876_el6-1.i686.rpm                        27-Feb-2013 12:45    67M    
    [   ]  VirtualBox-4.2-4.2.8_83876_el6-1.x86_64.rpm                      27-Feb-2013 13:01    67M    
    [   ]  VirtualBox-4.2-4.2.8_83876_fedora16-1.i686.rpm                   27-Feb-2013 12:45    66M    
    [   ]  VirtualBox-4.2-4.2.8_83876_fedora16-1.x86_64.rpm                 27-Feb-2013 12:45    66M    
    [   ]  VirtualBox-4.2-4.2.8_83876_fedora17-1.i686.rpm                   27-Feb-2013 12:45    66M    
    [   ]  VirtualBox-4.2-4.2.8_83876_fedora17-1.x86_64.rpm                 27-Feb-2013 12:45    66M    
    [   ]  VirtualBox-4.2-4.2.8_83876_fedora18-1.i686.rpm                   27-Feb-2013 12:46    68M    
    [   ]  VirtualBox-4.2-4.2.8_83876_fedora18-1.x86_64.rpm                 27-Feb-2013 12:46    68M    
    [   ]  VirtualBox-4.2-4.2.8_83876_mdv2010.0-1.i586.rpm                  27-Feb-2013 12:46    69M    
    [   ]  VirtualBox-4.2-4.2.8_83876_mdv2010.0-1.x86_64.rpm                27-Feb-2013 12:46    69M    
    [   ]  VirtualBox-4.2-4.2.8_83876_mdv2011.0-1.i586.rpm                  27-Feb-2013 12:46    61M    
    [   ]  VirtualBox-4.2-4.2.8_83876_mdv2011.0-1.x86_64.rpm                27-Feb-2013 12:46    61M    
    [   ]  VirtualBox-4.2-4.2.8_83876_openSUSE114-1.i586.rpm                27-Feb-2013 12:46    61M    
    [   ]  VirtualBox-4.2-4.2.8_83876_openSUSE114-1.x86_64.rpm              27-Feb-2013 12:46    61M    
    [   ]  VirtualBox-4.2-4.2.8_83876_sles10.1-1.i586.rpm                   27-Feb-2013 12:46    80M    
    [   ]  VirtualBox-4.2-4.2.8_83876_sles10.1-1.x86_64.rpm                 27-Feb-2013 12:46    80M    
    [   ]  VirtualBox-4.2-4.2.8_83876_sles11.0-1.i586.rpm                   27-Feb-2013 12:46    73M    
    [   ]  VirtualBox-4.2-4.2.8_83876_sles11.0-1.x86_64.rpm                 27-Feb-2013 12:47    73M    
    [BIN]  VirtualBox-4.2.8-83876-Linux_amd64.run                           27-Feb-2013 12:55    79M    
    [BIN]  VirtualBox-4.2.8-83876-Linux_x86.run                             27-Feb-2013 12:55    79M    
    [   ]  VirtualBox-4.2.8-83876-OSX.dmg                                   27-Feb-2013 12:55   103M    
    [   ]  VirtualBox-4.2.8-83876-SunOS.tar.gz                              27-Feb-2013 12:55   113M    
    [BIN]  VirtualBox-4.2.8-83876-Win.exe                                   27-Feb-2013 12:55    93M    
    [   ]  VirtualBox-4.2.8.tar.bz2                                         28-Feb-2013 02:22    72M    
    [   ]  VirtualBoxSDK-4.2.8-83876.zip                                    27-Feb-2013 13:00     9M    
    [   ]  virtualbox-4.2_4.2.8-83876~Debian~squeeze_amd64.deb              27-Feb-2013 09:00    60M    
    [   ]  virtualbox-4.2_4.2.8-83876~Debian~squeeze_i386.deb               27-Feb-2013 08:49    60M    
    [   ]  virtualbox-4.2_4.2.8-83876~Debian~wheezy_amd64.deb               27-Feb-2013 10:20    60M    
    [   ]  virtualbox-4.2_4.2.8-83876~Debian~wheezy_i386.deb                27-Feb-2013 10:05    61M    
    [   ]  virtualbox-4.2_4.2.8-83876~Ubuntu~hardy_amd64.deb                27-Feb-2013 12:12    82M    
    [   ]  virtualbox-4.2_4.2.8-83876~Ubuntu~hardy_i386.deb                 27-Feb-2013 11:59    79M    
    [   ]  virtualbox-4.2_4.2.8-83876~Ubuntu~lucid_amd64.deb                27-Feb-2013 09:42    71M    
    [   ]  virtualbox-4.2_4.2.8-83876~Ubuntu~lucid_i386.deb                 27-Feb-2013 09:33    71M    
    [   ]  virtualbox-4.2_4.2.8-83876~Ubuntu~natty_amd64.deb                27-Feb-2013 08:38    59M    
    [   ]  virtualbox-4.2_4.2.8-83876~Ubuntu~natty_i386.deb                 27-Feb-2013 08:26    59M    
    [   ]  virtualbox-4.2_4.2.8-83876~Ubuntu~oneiric_amd64.deb              27-Feb-2013 11:46    59M    
    [   ]  virtualbox-4.2_4.2.8-83876~Ubuntu~oneiric_i386.deb               27-Feb-2013 11:30    60M    
    [   ]  virtualbox-4.2_4.2.8-83876~Ubuntu~precise_amd64.deb              27-Feb-2013 09:24    60M    
    [   ]  virtualbox-4.2_4.2.8-83876~Ubuntu~precise_i386.deb               27-Feb-2013 09:10    60M    
    [   ]  virtualbox-4.2_4.2.8-83876~Ubuntu~quantal_amd64.deb              27-Feb-2013 08:56    59M    
    [   ]  virtualbox-4.2_4.2.8-83877~Ubuntu~quantal_i386.deb               01-Mar-2013 01:45    60M

    ถ้าต้องการ download มาทั้งหมด ก็ทำได้โดยการใช้คำสั่ง

     wget -r -np -nH --cut-dirs=2 http://download.virtualbox.org/virtualbox/4.2.8/

    แต่ก็จะเห็นว่าเราจะได้ไฟล์จำนวนมากที่เราไม่ต้องการมาด้วย เราต้องการไฟล์จริงๆเพียงไม่กี่ไฟล์ เพราะฉะนั้น ก็ต้องทำงานเพ่ิมขึ้นอีกหน่อยนึง

    แต่ก่อนที่จะเริ่ม จากการ download ไฟล์จาก directory ที่เราต้องการ ซึ่งเรารู้ตำแหน่งที่แน่นอนอยู่แล้ว จากการสำรวจแบบ manual มาตั้งข้อสมมติฐานก่อนว่า ถ้าเมื่อไหร่ virtualbox มีการ release version ใหม่ออกมา เราก็ควรที่จะรู้ได้โดยอัตโนมัติ หรืออย่างน้อย เราก็ไม่น่าจะจำเป็นที่จะต้องมาเขียน script ใหม่ … คำถามคือ เราจะรู้ได้ใหม? และ ถ้าได้ เราจะรู้ได้อย่างไร

    คำตอบแรกคือ ได้ คำตอบถัดมามี อยู่หลายทางเลือกครับ แต่ถ้าเอาแบบไม่ซับซ้อนมากนัก วิธีการที่ผมใช้แบบ manual อยู่ก็คือ เข้าไปดูที่ https://www.virtualbox.org/wiki/Downloads ซึ่งในหน้าที่ก็จะ list ตัว package ของ virtualbox ที่จะให้ download สำหรับ OS ต่างๆ และจะมี ระบุ version เอาไว้ด้วย

    ในบรรทัดที่ใช้สำหรับระบุ URL ให้ download ของ Linux ก็จะเขียนไว้ว่า

    VirtualBox 4.2.8 for Linux hosts

    ตัวเลข 4.2.8 คือ version ซึ่งจะเปลี่ยนไปเรื่อยๆ เมื่อ Virtualbox มีการ update เป็น version ใหม่
    เราสามารถ เอาตัวเลขนี้ มาได้ โดยการใช้ความร่วมมือระหว่าง โปรแกรม 2 ตัว คือ wget กับ grep โดยที่คำสั่ง

    wget -q -O- http://www.virtualbox.org/wiki/Downloads

    เราจะได้ ข้อมูลของ page ดังกล่าวอยู่ในรูป html ปรากฏขึ้นบนหน้าจอ … เราต้องการเฉพาะบรรทัดที่ระบุ URL สำหรับ Linux ก็สามารถใช้ grep สำหรับ ตัดมา เฉพาะบรรทัดนั้นได้ โดยการใช้คำสั่ง

    wget -q -O- http://www.virtualbox.org/wiki/Downloads | grep 'for Linux hosts'

    ซึ่งจะได้ผลลัพธ์ออกมาเป็น

    </li><li><strong><a href="/wiki/Linux_Downloads">VirtualBox 4.2.8 for Linux hosts</a></strong>

    และ โดยการใช้คำสั่ง sed เพื่อที่จะตัดข้อความข้างหน้า ตั้งแต่ <li><s… ไปจนถึง VirtualBox ทิ้งไป ก็สามารถเพิ่มคำสั่งเข้าไปเป็น

    wget -q -O- http://www.virtualbox.org/wiki/Downloads  |\
    grep 'for Linux hosts' |\
    sed -e 's/^.*VirtualBox //'

    ก็จะได้ผลลัพธ์ออกมาเป็น

    4.2.8 for Linux hosts</a></strong>

    คราวนี้ เพิ่มส่วนของการกำจัดข้อความด้านหลังตัวเลข version โดยใช้ expression ที่สองของ sed ก็จะได้คำสั่งเป็น

    wget -q -O- http://www.virtualbox.org/wiki/Downloads  |\
     grep 'for Linux hosts' |\
     sed -e 's/^.*VirtualBox //' -e 's/ for Linux hosts.*$//'

    และได้ผลลัพธ์ออกมาเป็น

    4.2.8

    สวยงามไม่มีที่ติ Smile
    เอาน่า … เชื่อผมหน่อยน่า บอกว่าสวยก็สวยสิ!

    หลังจากพยายามมาสักพักเราก็ได้ตัวเลข version มา … ซึ่งจะเสียเวลากับมันมากไปหรือเปล่า? …
    เอาน่า โดยตัวเลขที่มีอยู่นี้ เราสามารถเขียน script สำหรับการตรวจสอบว่า Virtualbox มีการ update version ใหม่หรือเปล่า โดยการเอา code ข้างต้น มาปรับให้เป็น script ได้ประมาณนี้

    #!/bin/sh
    
    VBOXWIKIDL="http://www.virtualbox.org/wiki/Downloads"
    
    getVBoxVersion() {
        VERS=`wget -q -O- $VBOXWIKIDL          |\
              grep 'for Linux hosts'           |\
              sed  -e 's/^.*VirtualBox //'      \
                   -e 's/ for Linux hosts.*$//' `
    }
    
    getVBoxVersion
    echo "Last VirtaulBox Version = $VERS"

    เขียนส่วนของ code ให้ execute ใน backtick เพื่อส่งค่ามาให้กับตัวแปร shell VERS ซึ่งเราจะเอาไปใช้ต่อไป ใช้ตัวแปร VBOXWIKIDL สำหรับการระบุ URL ของ download page เพื่อให้ code อ่านง่ายขึ้น และเขียนในรูปแบบของ shell function เพื่อที่เราจะเอาฟังก์ชันนี้ไปใช้ในงานอื่นต่อไปในอนาคต

    กำหนด ชื่อให้ script เป็น vboxvers แล้วกำหนดให้มัน execute ได้โดยการใช้คำสั่ง

    chmod +x vboxvers

    และทดสอบ

    ./vboxvers

    เราก็จะได้ script สำหรับแสดง version ล่าสุดของ VirtualBox ที่มีให้ download จาก website ของ VirtualBox … แต่ถ้าให้ดีขึ้นไปกว่านี้ ตัว script นี้ควรจะทำงานโดยอัตโนมัติ โดยการตรวจสอบวันละครั้ง และถ้ามี version ที่ใหม่กว่า ก็ค่อยส่ง email มาแจ้งเรา

    ซึ่งเราสามารถทำได้โดย การเพิ่ม code สำหรับการเก็บข้อมูล version ล่าสุดที่เคยตรวจสอบเอาไว้ในไฟล์ และเปรียบเทียบ ตัวเลขนั้นกับ version ใหม่ที่มี สมมติให้ไฟล์นั้นชื่อ .vboxvers.txt เก็บไว้ใน HOME ของเราเอง

    FILE="$HOME/.vboxvers.txt"

    ถ้ามีไฟล์นั้นอยู่ เราก็อ่านค่า version ล่าสุดที่เคยตรวจสอบมาจากไฟล์นั้น แต่ถ้าไม่มีไฟล์ ก็กำหนดค่า version เริ่มต้นให้เป็น “0.0.0” ซะ

    if [ ! -f "$FILE" ]; then
            LAST="0.0.0"
    else
            LAST=`cat $FILE`
    fi

    หลังจากนั้น เราก็จะอ่านค่า version ล่าสุดจาก web ของ VirtualBox มาโดยใช้ ฟังก์ชัน getVBoxVersion ที่เขียนเอาไว้แล้ว

    เอาค่าที่ได้มาเปรียบเทียบกัน ถ้าไม่เท่ากัน ก็ส่ง email ให้กับ address ที่กำหนดเอาไว้

    if [ "$LAST" != "$VERS" ]; then
            echo "New VirtualBox $VERS available" |\
            mail -s "VirtualBox $VERS" $EMAIL
            # Save new version
            echo "$VERS" > $FILE
    fi

    ซึ่งก็จะได้ script สุดท้ายมีหน้าตาประมาณนี้ครับ

    #!/bin/sh
    
    VBOXWIKIDL="http://www.virtualbox.org/wiki/Downloads"
    FILE="$HOME/.vboxvers.txt"
    EMAIL="me@example.com" # Change to your email address!
    
    getVBoxVersion() {
        VERS=`wget -q -O- $VBOXWIKIDL          |\
              grep 'for Linux hosts'           |\
              sed  -e 's/^.*VirtualBox //'      \
                   -e 's/ for Linux hosts.*$//' `
    }
    
    # Check whether we have version file
    # if not use initial 0.0.0 version
    # if there is, then get the last version from that file
    if [ ! -f "$FILE" ]; then
            LAST="0.0.0"
    else
            LAST=`cat $FILE`
    fi
    
    # Then get lastest version from VirtualBox web
    getVBoxVersion
    
    # Then check and report
    if [ "$LAST" != "$VERS" ]; then
            echo "New VirtualBox $VERS available" |\
            mail -s "VirtualBox $VERS" $EMAIL
            # Save new version
            echo "$VERS" > $FILE
    fi

    ว้า … ยังไม่ไปถึงใหนเลย … แต่ชักจะยาวเกินไปแล้ว ขอตัดจบแค่นี้ก่อนครับ เดี๋ยวจะกลับมาต่อเรื่องจะ download package ไฟล์ที่เราต้องการจาก download.virtualbox.org ได้ยังไง ใน blog ถัดไปครับ Exciting (กรรมวิธีในการเพิ่มจำนวน blog ทั้งที่มีเนื้อหาที่จะเล่าเท่าเดิม … (ฮา) …)

  • การจัดการกับ Backscatter Mail

    (อยู่ระหว่างการปรับปรุง)

    เมื่อ Spammer หรือ Virus ในระบบเครือข่ายของเรา พยายามที่จะส่ง email ซึ่ง

    • ส่งจาก (From) email address ปลอมซึ่งไม่มีอยู่จริง
    • ถึง (To, CC, BCC) email address ซึ่งบางส่วนไม่มีอยู่จริง หรือ ผิดรูปแบบ หรือ ปลายทางไม่ยอมรับ email จาก domain ของเราแล้ว

    จดหมายเหล่านั้นจะมีการแจ้งถึงความล้มเหลวของการส่ง ที่เรียกว่า “Undeliverable mail notification” ไปยังผู้ส่ง ซึ่ง ไม่มีอยู่จริง ดังนั้น จะเกิดจดหมายพวกนี้ ค้างใน mail queue จำนวนมาก ทำให้เกิดความล้าช้าในการส่งจดหมายปรกติ โดยจดหมายพวกนี้เราจะเรียกว่า Backscatter mail

     

     

    Reference

    http://www.postfix.org/BACKSCATTER_README.html

  • กิจกรรม CoP PSU sysadmin KM3 “ระบบปฏิบัติการโอเพนซอร์ส Linux Mint มีดีกว่าทำไมเพิ่งมาบอก”

    กิจกรรม CoP PSU sysadmin ลำดับถัดไปของเรา KM3 “ระบบปฏิบัติการโอเพนซอร์ส Linux Mint มีดีกว่าทำไมเพิ่งมาบอก” วันที่ 15 มี.ค. 56 เวลา 09.00 – 12.15 น. ห้อง 102 ศูนย์คอมพิวเตอร์ ม.อ. หาดใหญ่ครับ ครั้งนี้จะจัดต่างจากที่ผ่านมา คือ ขอจัดเป็นรายการเสวนาแลกเปลี่ยนความคิดเห็น โดยผมได้เรียนเชิญผู้ทรงคุณวุฒิมาร่วมงานด้วย

    ผู้สนใจตอบรับเข้าร่วมได้ที่อีเมล wiboon.w@psu.ac.th หรือที่เฟสบุ๊ค http://www.facebook.com/groups/psu.sysadmin/ ก็ได้ครับ (ดูรายชื่อผู้แจ้งเข้าร่วม)

    เสวนา เรื่อง “แนวทางในการสนับสนุนให้เกิดการใช้ซอฟต์แวร์ระบบปฏิบัติการโอเพนซอร์สพร้อมฟรีแวร์เพิ่มมากขึ้น” (ระบบปฏิบัติการโอเพนซอร์ส Linux Mint มีดีกว่าทำไมเพิ่งมาบอก)

    กลุ่มเป้าหมายผู้เข้าร่วม

    • ผู้ใช้งานคอมพิวเตอร์ ผู้ดูแลระบบ และผู้ดูแลระบบเครือข่ายที่ทำงานอยู่ในมหาวิทยาลัยสงขลานครินทร์ และ
    • ผู้สนใจทั่วไปที่ต้องการลดค่าใช้จ่ายในการจ่ายค่าลิขสิทธิ์การใช้ซอฟต์แวร์

    วันที่จัด

    • 15 มีนาคม 2556 เวลา 09.00 – 12.15 น.

    สถานที่จัด

    • ห้อง 102 ศูนย์คอมพิวเตอร์ มหาวิทยาลัยสงขลานครินทร์

    เนื้อหา
    1.เป็นการแนะนำระบบปฏิบัติการโอเพนซอร์สชื่อ Linux Mint ที่ไม่ต้องเสียค่าใช้จ่ายลิขสิทธิ์การใช้งาน

    • Linux ถึงจุดเปลี่ยน…
    • มาทำความรู้จักกับ Linux Mint
    • ใช้ Windows จนชิน…ปี 2556 แล้วลองสลับมาใช้ Linux ดูไหม
    • Windows ทำได้ Linux หล่ะทำได้ไหม แล้วอะไรที่ Windows ทำไม่ได้

    2.เล่าเรื่องที่ม.อ.ซื้อ Microsoft Licenses อย่างไร อะไรบ้าง และใครได้ใช้ประโยชน์

    • Microsoft มีทั้งจุดดีและจุดด้อยครับ หาก ม.อ. ไม่ซื้อเลยก็คงมีคนจำนวนไม่น้อยหาใช้ของเถื่อนมาใช้อยู่ดี
    • ทำอย่างไรให้เกิดประโยชน์สูงสุดในเงินที่ลงทุนไป
    • สิทธิประโยชน์ที่ Microsoft ให้ ม.อ. มีอะไรบ้าง บุคลากร, นักศึกษา, ห้อง Lab
    • สถิติการดาวน์โหลดและการลงทะเบียนเป็นจำนวนเท่าไหร่

    3.เสวนาแลกเปลี่ยนความคิดเห็น “แนวทางในการสนับสนุนให้เกิดการใช้ซอฟต์แวร์ระบบปฏิบัติการโอเพนซอร์สพร้อมฟรีแวร์เพิ่มมากขึ้น” ตัวอย่างหัวข้อในการเสวนา

    • การใช้ซอฟต์แวร์ระบบปฏิบัติการโอเพนซอร์สพร้อมฟรีแวร์เพื่อนำไปสู่การลดค่าใช้จ่ายในการซื้อซอฟต์แวร์จริงหรือไม่?
    • มีคณะไหนในชุมชน ม.อ. ประกาศไม่สนับสนุนซอฟร์แวร์เถื่อนหรือคิดจะทำแบบเป็นรูปธรรมบ้าง?
    • อนาคตของ open source ใน ม.อ. ทำอย่างไรจะผลักดันให้เกิดขึ้น?
    • การทำวิจัยสถาบันเพื่อสำรวจการใช้งานแต่ละแห่งโดยเฉพาะธุรการ อาจารย์ ใช้ Microsoft ทำอะไร ใช้อะไรบ้าง จะช่วยให้เกิดการเปลี่ยนแปลงหรือไม่?
    • การใช้ Linux มีข้อดีจริงหรือไม่ในเรื่องเหล่านี้เมื่อเทียบกับ Microsoft?
      – ลดปริมาณการละเมิดลิขสิทธิ์ (แผ่นเถื่อน)
      – นักศึกษาได้ประโยชน์ในเชิงพัฒนาต่อยอดความรู้ด้าน open source
      – เกิดการวิจัยด้านซอฟต์แวร์ open source ใมหาวิทยาลัยเพื่อให้เหมาะสมกับมหาวิทยาลัยวิจัย
      – ม.อ.เป็นตัวอย่างการใช้ซอฟต์แวร์ open source อย่างจริงจังเป็นการสร้างจุดแข็งให้กับองค์กร
      – ม.อ.บริการวิชาการให้กับชุมชน อบรมการใช้งาน Linux ให้กับชุมชนและท้องถิ่น

    กำหนดการ
    09.00-10.00 น. แนะนำ Linux Mint

    • โดยคุณศิริพงษ์ ศิริวรรณ ผู้ดูแลระบบคอมพิวเตอร์ คณะเภสัชศาสตร์ ม.อ.

    10.00-10.15 น. พักเบรค
    10.15-10.50 น. บอกเล่าเรื่อง Microsoft Licences ที่ม.อ.ซื้อ

    • โดยเกรียงไกร หนูทองคำ ผู้ดูแลระบบคอมพิวเตอร์ ศูนย์คอมพิวเตอร์ ม.อ.

    10.50-12.15 น. เสวนาแลกเปลี่ยนความคิดเห็น “แนวทางในการสนับสนุนให้เกิดการใช้ซอฟต์แวร์ระบบปฏิบัติการโอเพนซอร์สพร้อมฟรีแวร์เพิ่มมากขึ้น” ร่วมเสวนาโดย

    • คุณวิบูลย์ วราสิทธิชัย ประธานชมรมโอเพนซอร์สและฟรีแวร์ มหาวิทยาลัยสงขลานครินทร์
    • รศ.ปัญญรักษ์ งามศรีตระกูล ภาควิชาวิศวกรรมเครื่องกล ประธานชมรมโอเพนซอร์สและฟรีแวร์ มหาวิทยาลัยสงขลานครินทร์สมัยแรก
    • รศ.ดร.วรวุธ วิสุทธิ์เมธางกูร รองอธิการบดีฝ่ายพัฒนานักศึกษาและศิษย์เก่าสัมพันธ์
    • รศ.ดร.มนตรี กาญจนะเดชะ ผู้อำนวยการศูนย์คอมพิวเตอร์

    12.15-13.00 น. พักรับประทานอาหารเที่ยงร่วมกัน

    แจกแผ่น DVD Linux Mint สำหรับผู้ร่วมงานทุกท่าน
    พร้อมร่วมสนุกชิงรางวัล
    1. USB flash drive 16GB จำนวน 2 รางวัล
    2. ตุ๊กตาพวกกุญแจรูปนกเพนกวิน 2 รางวัล
    สนับสนุนโดยชมรมโอเพนซอร์สและฟรีแวร์ ม.อ.

    รายชื่อผู้แจ้งชื่อเข้าร่วม

    1. ชัยวัฒน์ ศรีจันทร์กุล คณะวิทยาการจัดการ ม.อ.
    2. วิศิษฐ โชติอุทยางกูร คณะทันตแพทยศาสตร์ ม.อ.
    3. สัมฤทธิ์ ฤทธิภักดี ศูนย์คอมพิวเตอร์ ม.อ.
    4. สมชาย วนธนศิลป์ ศูนย์คอมพิวเตอร์ ม.อ.
    5. นิติ โชติแก้ว คณะการแพทย์แผนไทย ม.อ.
    6. พรจรัส สุทธินันท์ คณะการจัดการสิ่งแวดล้อม ม.อ.
    7. คณกรณ์ หอศิริธรรม ศูนย์คอมพิวเตอร์ ม.อ.
    8. ธีรวัฒน์ แตระกุล คณะเภสัชศาสตร์ ม.อ.
    9. ภูเมศ จารุพันธ์ คณะพยาบาลศาสตร์ ม.อ.
    10. กฤตกร อินแพง คณะพยาบาลศาสตร์ ม.อ.
    11. ธีรเดช เขมะธีรรัตน์ คณะทันตแพทยศาสตร์ ม.อ.
    12. จันทนา เพ็ชรรัตน์ สำนักวิจัยและพัฒนา
    13. นาลิวัน หีมเห็ม สำนักวิจัยและพัฒนา
    14. ณัฐพล เพชรจิระวรพงศ์ ศูนย์คอมพิวเตอร์ ม.อ.
    15. ศุภกร  เพ็ชรรัตน์ คณะทันตแพทยศาสตร์ ม.อ.
    16. จรรยา เพชรหวน คณะทรัพยากรธรรมชาติ ม.อ.
    17. ยุวภา โฆสกิตติกุล คณะทรัพยากรธรรมชาติ ม.อ.
    18. ครูดนรอฝาด โส๊ะหัด โรงเรียนพัฒนาศาสตร์มูลนิธิ จ.สงขลา
    19. ผศ. ธีรวัฒน์ หังสพฤกษ์ ผู้ช่วยอธิการบดีฝ่ายวางแผนและพัฒนา ม.อ.
    20. เลียง คูบุรัตถ์ คณะวิศวกรรมศาสตร์ ม.อ.
    21. สงกรานต์ มุณีแนม ศูนย์คอมพิวเตอร์ ม.อ.
    22. เชวง ภควัตชัย คณะวิทยาศาสตร์ ม.อ.
    23. เนาวรัตน์ ทองไทย ศูนย์คอมพิวเตอร์ ม.อ.
    24. อำนาจ สุคนเขตร์ สำนักวิทยบริการ ม.อ.
    25. ธีรพันธุ์ บุญราช คณะเภสัชศาสตร์ ม.อ.
    26. น.ส.จุฑามาศ มากบุญ นักศึกษาฝึกงาน คณะเภสัชศาสตร์ ม.อ.
    27. น.ส. จุฑารัตน์ ปลื้มใจ นักศึกษาฝึกงาน คณะเภสัชศาสตร์ ม.อ.
    28. นายปัณณธร พูลสวัสดิ์ นักศึกษาฝึกงาน ศูนย์คอมพิวเตอร์ ม.อ.
    29. สมคิด อินทจักร คณะแพทยศาสตร์ ม.อ.
  • How to setup automatic start in virtual box,Hyper-v

    เนื่องจากเครื่องสำรองไฟในคณะมักจะสำรองได้แค่ชั่วโมงนิดหน่อยเวลาไฟดับเกินกว่านั้นจะทำให้ server ที่เป็น virtual ที่อยู่บน virtualbox และ hyper-v ของผมใช้งานไม่ได้ ดังนั้นจึงต้องหาวิธีแก้ไขโดยวันนี้มีวิธีมาแนะนำครับ (ผมทดลองกับ MS เท่านั้นนะ)

    อันดับแรกเริ่มที่ Hyper-v ก่อนเลยครับ

    เปิดไปที่ Server Manager>Roles>Hyper-v>Hyper-V Manager> แล้วเลือกที่ Hyper-v >Setting ทางขวามือครับแล้วเลือก Automatic Start Action ดูตามรูปก็ได้ครับ

     

    Virtualbox

    กรณีของ Virtualbox ใน windows เราต้องสร้าง  batfile ครับเพราะมันยังไม่มีปุ่มให้เรากดเหมือน Hyper-v แต่มันก็ไม่ได้ยากเย็นอะไรครับอันดับแรกสร้าง batfile ก่อน  ต่อมาให้พิมพ์ข้อความใน batfile ดังนี้

    cd “C:\Program Files\Oracle\VirtualBox\”
    VBoxManage.exe startvm “vm1”
    VBoxManage.exe startvm “vm2”
    VBoxManage.exe startvm “vm3”
    VBoxManage.exe startvm “vm4”

    เช่นของผม

    cd “C:\Program Files\Oracle\VirtualBox\”
    VBoxManage.exe startvm “ubuntu-desktop”

    จากนั้นก็นำไฟล์ .bat ของเราไปวางไว้ใน startup ซึ่งของ win7  หายากหน่อย อยู่ที่  C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup  จากนั้นก็วางไฟล์ .bat ของเราไว้ในนั้นลองเปิดเครื่องอีกครั้ง virtual  ของเราก็จะทำงานเองโดยอัตโนมัติครับ

     

    Ref.
    https://forums.virtualbox.org/viewtopic.php?f=2&t=18794
    http://seoroot.com/blog/howto/how-to-autostart-a-virtual-machine-in-virtualbox.html