เปลี่ยน uptime timestamp ในคำสั่ง dmesg ให้เป็น date/time timestamp

เคยใหมครับ เมื่อใช้คำสั่ง dmesg เพื่อที่จะดู kernel message แล้วสงสัยว่า เวลาที่แสดงในเครื่องหมาย square bracket ที่อยู่ด้านหน้าของ message น่ะมันเป็นเวลาเท่าไหร่กันแน่? อาจจะไม่บ่อยนัก แต่ผมก็เคยมีปัญหานั้น ถ้าใช้คำสั่ง dmesg บน command line เราอาจจะเห็น message ประมาณนี้ [   10.738140] udev[228]: starting version 164 [   12.840798] ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 9 [   12.842168] PCI: setting IRQ 9 as level-triggered [   12.843002] pci 0000:00:04.0: PCI INT A -> Link[LNKD] -> GSI 9 (level, low) -> IRQ 9 [   12.856454] input: PC Speaker as /devices/platform/pcspkr/input/input2 [   12.911121] vboxguest: major 0, IRQ 9, I/O port d020, MMIO at 00000000f0400000 (size 0x400000) [   12.912531] vboxguest: Successfully loaded version 3.2.10_OSE (interface 0x00010004) [   13.165633] piix4_smbus 0000:00:07.0: SMBus base address uninitialized – upgrade BIOS or use force_addr=0xaddr [   13.233473] parport_pc 00:05: reported by Plug and Play ACPI [   13.314410] ACPI: AC Adapter [AC] (on-line) [   13.318154] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3 [   13.345820] ACPI: Power Button [PWRF] [   13.376871] input: Sleep Button as /devices/LNXSYSTM:00/LNXSLPBN:00/input/input4 [   13.420217] ACPI: Sleep Button [SLPF] [   13.455000] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input5 [   15.017345] Intel ICH 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 5 (level, low) -> IRQ 5 [   15.019308] Intel ICH 0000:00:05.0: setting latency timer to 64 [   15.344130] intel8x0_measure_ac97_clock: measured 54439 usecs (10177 samples) [   15.346177]

Read More »

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 ที่ซับซ้อนน่าดู แต่จริงๆแล้วมีวิธีการที่ง่ายกว่านั้น ก่อนอื่นเรามา 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

Read More »

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 |     

Read More »

การจัดการกับ 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

Read More »

How to install LibreOffice 4.0 in Ubuntu & Mint

Uninstall LibreOffice รุ่นเก่าออกให้หมด $sudo apt-get remove –purge libreoffice* Download Libreoffice for Ubuntu ที่ LibreOffice โดยเลือกรุ่นให้ถูกต้องว่า 64 บิตหรือ 32บิต (x86 หรือ x86_64) ดูได้จากคำสั่ง $uname -a หากได้ผลลัพธ์ว่า Linux Enterprise 3.5.0-23-generic #35-Ubuntu SMP Thu Jan 24 13:15:40 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux แปลว่า 64บิต สังเกตุว่ามี x86_64 ต่อท้าย ส่วนรุ่น 32บิตจะได้ว่า Linux ubuntu 2.6.32-34-generic-pae #77-Ubuntu SMP Tue Sep 13 21:16:18 UTC 2011 i686 GNU/Linux สังเกตว่ามี i686 เครื่องรุ่นเก่ากว่านี้อาจจะเป็นเลขอื่นๆ

Read More »