<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SpaLinux.com - สปาลีนุกซ์ &#187; Utility</title>
	<atom:link href="http://spalinux.com/category/utility/feed" rel="self" type="application/rss+xml" />
	<link>http://spalinux.com</link>
	<description>เพื่อชีวิตที่ผ่อนคลายของคนใช้ลีนุกซ์</description>
	<lastBuildDate>Sat, 12 May 2012 10:38:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>คำสั่งตรวจสอบฮาร์ดแวร์ของเครื่อง</title>
		<link>http://spalinux.com/2012/04/command-to-check-hardware-specification-in-linux</link>
		<comments>http://spalinux.com/2012/04/command-to-check-hardware-specification-in-linux#comments</comments>
		<pubDate>Sat, 28 Apr 2012 10:36:24 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[Disk]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[CPU]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[view]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2187</guid>
		<description><![CDATA[หลังการติดตั้งลีนุกซ์เสร็จทุกครั้่ง ก่อนจะคอนฟิกแล้วนำไปใช้งาน แนะนำให้ใช้คำสั่งลีนุกซ์ ดูฮาร์ดแวร์ของเครื่อง เพื่อตรวจสอบความถูกต้องว่าเราลงถูกต้อง ครบถ้วนไหม ในที่นี้จะแนะนำคำสั่งเพื่อตรวจสอบฮาร์ดแวร์หลัก 3 ส่วนคือ CPU, Memory และ Disk CPU ใช้คำสั่ง lscpu เพื่อดูข้อมูลโดยรวมของ CPU เครื่องได้ ตัวอย่างผลลัพธ์ที่ได้ [root@cent6 ~]# lscpu Architecture:          x86_64 CPU op-mode(s):        32-bit, 64-bit CPU(s):                4 Thread(s) per core:    1 Core(s) per socket:    4 CPU socket(s):         1 NUMA node(s):          1 Vendor ID:             GenuineIntel CPU family:            6 Model:                 15 Stepping:              11 [...]]]></description>
			<content:encoded><![CDATA[<p>หลังการติดตั้งลีนุกซ์เสร็จทุกครั้่ง ก่อนจะคอนฟิกแล้วนำไปใช้งาน แนะนำให้ใช้คำสั่งลีนุกซ์ ดูฮาร์ดแวร์ของเครื่อง เพื่อตรวจสอบความถูกต้องว่าเราลงถูกต้อง ครบถ้วนไหม</p>
<p>ในที่นี้จะแนะนำคำสั่งเพื่อตรวจสอบฮาร์ดแวร์หลัก 3 ส่วนคือ CPU, Memory และ Disk</p>
<p><span id="more-2187"></span></p>
<h4>CPU</h4>
<p>ใช้คำสั่ง lscpu เพื่อดูข้อมูลโดยรวมของ CPU เครื่องได้</p>
<p>ตัวอย่างผลลัพธ์ที่ได้</p>
<pre>[root@cent6 ~]# <strong>lscpu</strong>
<span style="color: #0000ff;">Architecture:          x86_64</span>
<span style="color: #0000ff;">CPU op-mode(s):        32-bit, 64-bit</span>
<span style="color: #0000ff;">CPU(s):                4</span>
Thread(s) per core:    1
Core(s) per socket:    4
CPU socket(s):         1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 15
Stepping:              11
<span style="color: #0000ff;">CPU MHz:               2659.626</span>
L1d cache:             32K
L1i cache:             32K
L2 cache:              4096K</pre>
<p>&nbsp;</p>
<p>หรือหากต้องการดูรายละเอียดของ CPU ในแต่ละ core เลย สามารถทำได้โดยใช้คำสั่ง cat อ่านไฟล์ /proc/cpuinfo</p>
<p>ผลลัพธ์จะแสดงรายละเอียดขึ้นมาทั้งหมด (ในตัวอย่างนี้ตัดมาเฉพาะ 2 core แรก)</p>
<pre>[root@cent6 ~]# <strong>cat /proc/cpuinfo</strong>
<span style="color: #0000ff;">processor       : 0</span>
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
<span style="color: #0000ff;">model name      : Intel(R) Xeon(R) CPU X5355 @ 2.66GHz</span>
stepping        : 11
<span style="color: #0000ff;">cpu MHz         : 2659.626</span>
cache size      : 4096 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi
bogomips        : 5319.25
clflush size    : 64
cache_alignment : 64
address sizes   : 38 bits physical, 48 bits virtual
power management:</pre>
<pre><span style="color: #0000ff;">processor       : 1</span>
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
<span style="color: #0000ff;">model name      : Intel(R) Xeon(R) CPU X5355  @ 2.66GHz</span>
stepping        : 11
<span style="color: #0000ff;">cpu MHz         : 2659.626</span>
cache size      : 4096 KB
physical id     : 0
siblings        : 4
core id         : 1
cpu cores       : 4
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi
bogomips        : 5320.01
clflush size    : 64
cache_alignment : 64
address sizes   : 38 bits physical, 48 bits virtual
power management:
...</pre>
<p>&nbsp;</p>
<h4>Memory</h4>
<p>สำหรับหน่วยความจำ หากต้องการดูแค่ขนาดรวม memory ที่ลีนุกซ์เห็นและใช้งานได้ ให้ใช้คำสั่ง free แล้วดูส่วน total จะเป็นขนาดของหน่วยความจำรวมของเครื่อง ผลลัพธ์ที่แสดงโดยดีฟอลต์จะเป็นหน่วย kB (kilo bytes)</p>
<pre>[root@cent6 ~]# <strong>free</strong>
             <span style="color: #0000ff;">total      </span> used       free     shared    buffers     cached
<span style="color: #0000ff;">Mem</span>:       <span style="color: #0000ff;">1020756    </span> 258060     762696          0      20140     106752
-/+ buffers/cache:     131168     889588
Swap:      2097144          0    2097144</pre>
<p>เช่น เครื่องนี้มีขนาดหน่วยความจำ (memory) 1020756 kB หรือประมาณ 1 GB</p>
<p>แต่หากต้องการดูรายละเอียดถึงฮาร์ดแวร์เลยว่า มี memory กี่แผง กี่สล๊อต ต้องใช้คำสั่ง dmidecode ซึ่งค่อนข้างดูยากพอสมควร และแตกต่างกันตามชนิดของฮาร์ดแวร์</p>
<p>แนะนำให้ดูจาก BIOS หรือพอร์ต Management (out-of-band) ของเครื่องจะง่ายกว่า แล้วใช้คำสั่ง free เพื่อดูผลรวมของ memory ที่ลีนุกซ์เห็น</p>
<p>&nbsp;</p>
<h4>Disk</h4>
<p>ใช้คำสั่ง fdisk -l เพื่อดูดิสก์ทั้งหมดที่ต่ออยู่ ผลลัพธ์ที่ได้ จะแสดงชื่อดิสก์ที่ลีนุกซ์ใช้ เช่น /dev/sda ขนาดฮาร์ดดิสก์ (500 GB) และข้อมูลการแบ่งพาร์ทิชั่น</p>
<pre>[root@cent6 ~]# <strong>fdisk -l</strong></pre>
<pre>Disk <span style="color: #0000ff;">/dev/sda: 500 GB</span>, 500007860016 bytes
 255 heads, 63 sectors/track, 60800 cylinders
 Units = cylinders of 16065 * 512 = 8225180 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes</pre>
<pre>Device Boot      Start         End      Blocks   Id  System
 /dev/sda1   *           1          25      204800   83  Linux
 /dev/sda2              26       12773   102400000   83  Linux
 /dev/sda3           12774       14804    16380000   82  Linux swap / Solaris</pre>
<p>&nbsp;</p>
<p>หากต้องการดูรายละเอียดของฮาร์ดดิสก์ เช่นยี่ห้อ รุ่น serial number ต้องใช้คำสั่ง hdparm ออปชั่น &#8216;-I&#8217; แล้วตามด้วยชื่อดิสก์ที่ต้องการดู</p>
<pre>[root@cent6 ~]# <strong>hdparm -I /dev/sda</strong></pre>
<pre>/dev/sda:</pre>
<pre>ATA device, with non-removable media
<span style="color: #0000ff;"> Model Number:       ST3500640A</span>
<span style="color: #0000ff;"> Serial Number:      123456789</span>
 Firmware Revision:  3.0</pre>
<p>เช่นเดียวกับการตรวจสอบหน่วยความจำ (memory) ผลลัพธ์ที่ได้ อาจแตกต่างกันไป บางเครื่องหรือดิสก์บางรุ่นก็ดูไม่ได้  ขึ้นอยู่กับชนิดของฮาร์ดแวร์ เพื่อความง่ายแนะนำให้ใช้ BIOS ของเครื่องตรวจสอบรายละเอียด</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/command-to-check-hardware-specification-in-linux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>หัดใช้ vi แก้ไขไฟล์บนลีนุกซ์</title>
		<link>http://spalinux.com/2012/04/how-to-use-vi-text-editor-on-linux</link>
		<comments>http://spalinux.com/2012/04/how-to-use-vi-text-editor-on-linux#comments</comments>
		<pubDate>Sat, 28 Apr 2012 08:52:43 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Editor]]></category>
		<category><![CDATA[Filesystem]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[vi]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2161</guid>
		<description><![CDATA[หากคุณต้องการหัดใช้ลีนุกซ์ โดยเฉพาะอย่างยิ่งการเป็นผู้ดูแลระบบ (System Administrator) โปรแกรมหนึ่งที่ต้องฝึกใช้ให้เป็นคือ vi เพื่อใช้แก้ไขไฟล์บนลีนุกซ์ หรือ UNIX ถึงแม้ว่าจะมีโปรแกรมอื่นเช่น nano ที่เป็นโปรแกรม editor ใช้แก้ไขไฟล์ได้เหมือนกัน และมักจะติดตั้งมาด้วย แต่ในบางเครื่องโดยเฉพาะ UNIX ประเภทอื่นๆ โดยส่วนใหญ่แล้ว จะไม่ได้ติดตั้งโปรแกรมนี้มา จะมีเฉพาะ vi เท่านั้น ดังนั้น จะขอแนะนำวิธีการใช้ vi อย่างง่ายๆ ใช้คำสั่งพื้นฐานเพื่อแก้ไข และบันทึกไฟล์บนลีนุกซ์ หมายเหตุ หน้าจอหรือข้อความที่แสดงอาจแตกต่างกันไป ขึ้นอยู่กับเวอร์ชั่นของ vi และออปชั่นหรือคอนฟิกที่ตั้งค่าไว้ ในที่นี้จะทดสอบบน CentOS 6 สำหรับการหัดแก้ไขไฟล์ แนะนำให้ล็อกอินเป็น user ธรรมดา เพื่อป้องกันไม่ให้ ไปแก้ไขไฟล์สำคัญของระบบ พิมพ์คำสั่ง vi เพื่อเข้าสู่โปรแกรม [alice@cent6 ~]$ vi หน้าจอ vi เมื่อเข้าครั้งแรก อย่างแรกที่แนะนำให้ลองทำคือ ออกจากโปรแกรม vi [...]]]></description>
			<content:encoded><![CDATA[<p>หากคุณต้องการหัดใช้ลีนุกซ์ โดยเฉพาะอย่างยิ่งการเป็นผู้ดูแลระบบ (System Administrator) โปรแกรมหนึ่งที่ต้องฝึกใช้ให้เป็นคือ vi เพื่อใช้แก้ไขไฟล์บนลีนุกซ์ หรือ UNIX</p>
<p>ถึงแม้ว่าจะมีโปรแกรมอื่นเช่น nano ที่เป็นโปรแกรม editor ใช้แก้ไขไฟล์ได้เหมือนกัน และมักจะติดตั้งมาด้วย แต่ในบางเครื่องโดยเฉพาะ UNIX ประเภทอื่นๆ โดยส่วนใหญ่แล้ว จะไม่ได้ติดตั้งโปรแกรมนี้มา จะมีเฉพาะ vi เท่านั้น</p>
<p>ดังนั้น จะขอแนะนำวิธีการใช้ vi อย่างง่ายๆ ใช้คำสั่งพื้นฐานเพื่อแก้ไข และบันทึกไฟล์บนลีนุกซ์</p>
<p><span id="more-2161"></span><br />
หมายเหตุ หน้าจอหรือข้อความที่แสดงอาจแตกต่างกันไป ขึ้นอยู่กับเวอร์ชั่นของ vi และออปชั่นหรือคอนฟิกที่ตั้งค่าไว้ ในที่นี้จะทดสอบบน CentOS 6</p>
<p>สำหรับการหัดแก้ไขไฟล์ แนะนำให้ล็อกอินเป็น user ธรรมดา เพื่อป้องกันไม่ให้ ไปแก้ไขไฟล์สำคัญของระบบ</p>
<p>พิมพ์คำสั่ง vi เพื่อเข้าสู่โปรแกรม</p>
<pre>[alice@cent6 ~]$ <strong>vi</strong></pre>
<p>หน้าจอ vi เมื่อเข้าครั้งแรก</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/v01-VIM-first-page.png"><img class="alignnone size-full wp-image-2163" title="v01-VIM-first-page" src="http://spalinux.com/wp-content/uploads/2012/04/v01-VIM-first-page.png" alt="" width="490" height="356" /></a></p>
<p>อย่างแรกที่แนะนำให้ลองทำคือ ออกจากโปรแกรม vi ให้ได้</p>
<p>พิมพ์ <strong><span style="color: #0000ff;">:q</span></strong> เพื่อออกจาก vi</p>
<p>สังเกตเมื่อพิมพ์เครื่องหมาย<span style="color: #0000ff;"><strong> :</strong></span> ด้านล่างซ้ายของหน้าจอจะขึ้นเครื่องหมาย : เพื่อแสดงว่าตอนนี้อยู่ในโหมด &#8220;Ex mode&#8221; รอรับคำสั่ง เช่น q (quit) ออกจาก vi</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/v02-ex-command.png"><img class="alignnone size-full wp-image-2164" title="v02-ex-command" src="http://spalinux.com/wp-content/uploads/2012/04/v02-ex-command.png" alt="" width="490" height="356" /></a></p>
<p>&nbsp;</p>
<p>เมื่อพิมพ์ <strong><span style="color: #0000ff;">:q</span></strong> แล้วกด [Enter] จะเป็นการออกจาก vi กลับสู่พร้อมพต์</p>
<p>พิมพ์คำสั่ง vi เพื่อเข้าสู่ vi อีกครั้ง</p>
<pre>[alice@cent6 ~]$ <strong>vi</strong></pre>
<p>โดยดีฟอลต์หากไม่ได้ระบุออปชั่นใดๆ ตอนพิมพ์คำสั่ง vi เมื่อเข้าสู่โปรแกรม จะเข้าสู่โหมด คำสั่ง &#8220;COMMAND&#8221;  สิ่งที่พิมพ์ลงไปถือเป็นคำสั่งให้ vi ทำงานอย่างใดอย่างหนึ่ง</p>
<p>กดปุ่ม <strong><span style="color: #0000ff;">i</span></strong> เพื่อเข้าสู่โหมด &#8220;แก้ไข&#8221; ไฟล์ สังเกตหน้าจอด้านล่างซ้ายจะขึ้น &#8220;&#8211; INSERT &#8211;&#8221; เพื่อแสดงว่าตอนนี้อยู่ในโหมด &#8220;INSERT&#8221; ให้เราสามารถพิมพ์ข้อความแก้ไขไฟล์ได้</p>
<p>ปุ่ม <strong><span style="color: #0000ff;">i</span></strong> จะเป็นการแทรก (insert) ข้อความลงไปก่อนหน้าตัวอักษรที่เคอร์เซอร์อยู่ ลองพิมพ์ข้อความลงไป</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/v03-INSERT.png"><img class="alignnone size-full wp-image-2165" title="v03-INSERT" src="http://spalinux.com/wp-content/uploads/2012/04/v03-INSERT.png" alt="" width="490" height="356" /></a></p>
<p>&nbsp;</p>
<p>เมื่อพิมพ์ข้อความเรียบร้อยแล้ว ต้องการจะบันทึกการแก้ไขไฟล์ (save)</p>
<p>ขั้นแรกให้กดปุ่ม <strong><span style="color: #0000ff;">[Esc]</span></strong> เพื่อกลับสู่โหมด &#8220;คำสั่ง&#8221; สังเกตด้านล่างซ้าย คำว่า &#8220;INSERT&#8221; จะหายไป</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/v03-2-back-to-command.png"><img class="alignnone size-full wp-image-2176" title="v03-2-back-to-command" src="http://spalinux.com/wp-content/uploads/2012/04/v03-2-back-to-command.png" alt="" width="490" height="356" /></a></p>
<p>&nbsp;</p>
<p>พิมพ์ <span style="color: #0000ff;"><strong>:w hello.txt</strong></span> เป็นการสั่งให้เซฟ (write) ลงชื่อไฟล์ hello.txt</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/v04-save-file.png"><img class="alignnone size-full wp-image-2166" title="v04-save-file" src="http://spalinux.com/wp-content/uploads/2012/04/v04-save-file.png" alt="" width="490" height="356" /></a></p>
<p>&nbsp;</p>
<p>แล้วกด [Enter] เพื่อเซฟ สังเกตหน้าจอด้านล่าง แสดงข้อมูลชื่อไฟล์ที่เราเซฟลงไป</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/v05-file-information.png"><img title="v05-file-information" src="http://spalinux.com/wp-content/uploads/2012/04/v05-file-information.png" alt="" width="490" height="356" /></a></p>
<p>&nbsp;</p>
<p>พิมพ์<strong><span style="color: #0000ff;"> :q</span></strong> แล้วกด [Enter] เพื่อออกจาก vi กลับสู่พร็อมพต์</p>
<p>โดยทั่วไปแล้ว เมื่อแก้ไขไฟล์เสร็จเรียบร้อย นิยมจะพิมพ์ <strong><span style="color: #0000ff;">:wq</span></strong> เพื่อสั่งเซฟและออกจาก vi ทีเดียวเลย</p>
<p>ใช้คำสั่ง cat เพื่อดูไฟล์ที่สร้างขึ้น</p>
<pre>[alice@cent6 ~]$ <strong>cat hello.txt</strong>
hello world</pre>
<p>&nbsp;</p>
<p>พิมพ์ vi ตามด้วยชื่อไฟล์ เพื่อแก้ไขไฟล์</p>
<pre>[alice@cent6 ~]$ <strong>vi hello.txt</strong></pre>
<p>ทดลองกดปุ่ม hjkl ปุ่มใดปุ่มหนึ่งที่ละปุ่ม เพื่อทดลองเลื่อนเคอร์เซอร์ไปมา</p>
<ul>
<li><strong><span style="color: #0000ff;">h </span></strong> ซ้าย</li>
<li><strong><span style="color: #0000ff;">j</span></strong>   ลง</li>
<li><strong><span style="color: #0000ff;">k</span></strong>  ขึ้น</li>
<li><strong><span style="color: #0000ff;">l</span></strong>  ขวา</li>
</ul>
<p>หรืออาจใช้ปุ่ม cursor ก็ได้ แต่แนะนำให้หัดใช้ปุ่ม <span style="color: #0000ff;"><strong>hjkl</strong></span> สำหรับการเลื่อนเคอร์เซอร์ เพราะบางเครื่องหรือบน UNIX บางตัว ไม่สามารถใช้ปุ่ม cursor ได้</p>
<p>หมายเหตุ ในโหมด &#8220;คำสั่ง&#8221; ของ vi ตัวอักษรเล็กใหญ่ จะไม่เหมือนกัน</p>
<p>กดปุ่ม <strong><span style="color: #0000ff;">l</span></strong> เพื่อเลื่อนเคอร์เซอร์ไปขวาสุด หรืออยู่ตรงตัวอักษร d ของคำว่า world</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/v06-hjkl.png"><img class="alignnone size-full wp-image-2180" title="v06-hjkl" src="http://spalinux.com/wp-content/uploads/2012/04/v06-hjkl.png" alt="" width="490" height="356" /></a></p>
<p>&nbsp;</p>
<p>แล้วกดปุ่ม <strong><span style="color: #0000ff;">a</span></strong> เพื่อเพิ่มข้อความต่อท้าย (append) ตัวอักษรที่เคอร์เซอร์อยู่ ในที่นี้คือตัวอักษร d</p>
<p>สังเกตว่าด้านล่างซ้าย ก็จะขึ้นข้อความ INSERT เพื่อแสดงว่าเข้าสู่โหมดแก้ไข</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/v06-append.png"><img class="alignnone size-full wp-image-2167" title="v06-append" src="http://spalinux.com/wp-content/uploads/2012/04/v06-append.png" alt="" width="490" height="356" /></a></p>
<p>&nbsp;</p>
<p>เมื่อเพิ่มข้อความเสร็จ กดปุ่ม <strong><span style="color: #0000ff;">[Esc]</span></strong> เพื่อกลับสู่โหมดคำสั่งอีกครั้ง</p>
<p>ต้องการแก้ไขข้อความอีกครั้ง ก็กดปุ่ม <strong><span style="color: #0000ff;">i</span></strong> หรือ <strong><span style="color: #0000ff;">a</span></strong> แก้ไขเสร็จก็กดปุ่ม <strong><span style="color: #0000ff;">[Esc]</span></strong> ทำสลับไปมาได้</p>
<p>หากต้องการจะลบ กด <strong><span style="color: #0000ff;">[Esc]</span></strong> เพื่อกลับสู่โหมดคำสั่ง เลื่อนเคอร์เซอร์ไปยังตัวอักษรที่ต้องการลบ กดปุ่ม<strong><span style="color: #0000ff;"> x</span></strong> เพื่อลบตัวอักษรที่เคอร์เซอร์อยู่<br />
พิมพ์ <strong><span style="color: #0000ff;">:wq</span></strong> เพื่อสั่งบันทึกไฟล์ และออกจาก vi</p>
<p>ใช้คำสั่ง cat เพื่อดูไฟล์ที่แก้ไข</p>
<pre>[alice@cent6 ~]$ <strong>cat hello.txt</strong>
hello world!
second line</pre>
<p>แต่ถ้าแก้ไขไฟล์ไปแล้ว ผิดพลาด ต้องการยกเลิก ไม่บันทึกหรือเซฟไฟล์ แล้วต้องการออกจาก vi</p>
<p>ในโหมดคำสั่ง</p>
<p>ถ้ากด <strong><span style="color: #0000ff;">:q</span></strong> เฉยๆ  โปรแกรม vi จะฟ้องว่าไฟล์มีการแก้ไขไปแล้ว ยังไม่มีการเซฟ</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/07-quit-no-write-file.png"><img class="alignnone size-full wp-image-2182" title="07-quit-no-write-file" src="http://spalinux.com/wp-content/uploads/2012/04/07-quit-no-write-file.png" alt="" width="490" height="356" /></a></p>
<p>&nbsp;</p>
<p>ต้องพิมพ์ <strong><span style="color: #0000ff;">:q!</span></strong> เพื่อยืนยันว่าต้องการจะออกจาก vi โดยไม่ต้องการเซฟไฟล์</p>
<p>&nbsp;</p>
<p>คำแนะนำสำหรับการเริ่มต้น ฝึกใช้ปุ่มที่ยกตัวอย่างมา และทำความเข้าใจระหว่างโหมด &#8220;คำสั่ง&#8221; และโหมด &#8220;แก้ไข&#8221; แค่นี้ก็เพียงพอในการใช้งาน vi เพื่อแก้ไขไฟล์ได้แล้ว</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/how-to-use-vi-text-editor-on-linux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ถ่ายโอนไฟล์ระหว่าง Windows กับลีนุกซ์ ด้วย pscp</title>
		<link>http://spalinux.com/2012/04/transfer-file-between-windows-and-linux-by-pscp</link>
		<comments>http://spalinux.com/2012/04/transfer-file-between-windows-and-linux-by-pscp#comments</comments>
		<pubDate>Sat, 21 Apr 2012 18:53:23 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Authentication]]></category>
		<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Filesystem]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[pscp]]></category>
		<category><![CDATA[scp]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2142</guid>
		<description><![CDATA[ในหลายๆ ครั้ง เรามีไฟล์อยู่บน Windows ต้องการถ่ายโอนไปยังลีนุกซ์ หรือในทำนองกลับกัน ต้องการดาวน์โหลดไฟล์จากลีนุกซ์กลับมาไว้บน Windows บทนี้จะแนะนำการใช้โปรแกรม pscp รันบน Windows เพื่อใช้ถ่ายโอนไฟล์ (transfer) กับเครื่องที่รันลีนุกซ์ ผ่านทาง Secure Shell ได้ ดาวน์โหลดโปรแกรม pscp โปรแกรม pscp เป็นส่วนหนึ่งของชุดโปรแกรม PuTTY แต่สามารถใช้งานได้โดยลำพัง ไม่จำเป็นต้องติดตั้งโปรแกรมทั้งชุด เพียงแค่ดาวน์โหลดไฟล์ pscp.exe ในหน้า PuTTY Download Page ภายใต้หัวข้อ For Windows on Intel x86 คลิ้กดาวน์โหลดไฟล์ pscp.exe เซฟลงบน Desktop ของ Windows &#160; สร้างไฟล์ทดสอบบน Windows ชื่อไฟล์ &#8220;win-data.txt&#8221; เซฟไว้บน Desktop &#160; คลิ้กปุ่ม start [...]]]></description>
			<content:encoded><![CDATA[<p>ในหลายๆ ครั้ง เรามีไฟล์อยู่บน Windows ต้องการถ่ายโอนไปยังลีนุกซ์ หรือในทำนองกลับกัน ต้องการดาวน์โหลดไฟล์จากลีนุกซ์กลับมาไว้บน Windows</p>
<p>บทนี้จะแนะนำการใช้โปรแกรม pscp รันบน Windows เพื่อใช้ถ่ายโอนไฟล์ (transfer) กับเครื่องที่รันลีนุกซ์ ผ่านทาง Secure Shell ได้</p>
<p><span id="more-2142"></span></p>
<h4>ดาวน์โหลดโปรแกรม pscp</h4>
<p>โปรแกรม pscp เป็นส่วนหนึ่งของชุดโปรแกรม PuTTY แต่สามารถใช้งานได้โดยลำพัง ไม่จำเป็นต้องติดตั้งโปรแกรมทั้งชุด เพียงแค่ดาวน์โหลดไฟล์ pscp.exe</p>
<p>ในหน้า PuTTY Download Page ภายใต้หัวข้อ For Windows on Intel x86 คลิ้กดาวน์โหลดไฟล์ pscp.exe เซฟลงบน Desktop ของ Windows</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps01-download-pscp.png"><img class="alignnone size-full wp-image-2144" title="ps01-download-pscp" src="http://spalinux.com/wp-content/uploads/2012/04/ps01-download-pscp.png" alt="" width="757" height="234" /></a></p>
<p>&nbsp;</p>
<p>สร้างไฟล์ทดสอบบน Windows ชื่อไฟล์ &#8220;win-data.txt&#8221; เซฟไว้บน Desktop</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps02-pscp-on-Desktop.png"><img class="alignnone size-full wp-image-2145" title="ps02-pscp-on-Desktop" src="http://spalinux.com/wp-content/uploads/2012/04/ps02-pscp-on-Desktop.png" alt="" width="83" height="309" /></a></p>
<p>&nbsp;</p>
<p>คลิ้กปุ่ม start เลือก Run</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps03-click-start-Run.png"><img class="alignnone size-full wp-image-2146" title="ps03-click-start-Run" src="http://spalinux.com/wp-content/uploads/2012/04/ps03-click-start-Run.png" alt="" width="253" height="133" /></a></p>
<p>&nbsp;</p>
<p>หน้าจอ Run เราสามารถพิมพ์คำสั่งบน Windows ที่ต้องการจะรันในช่อง Open ได้</p>
<p>พิมพ์ cmd แล้วกดปุ่ม [OK] หรือ [Enter] เพื่อเข้าสู่ command prompt ของ Windows</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps04-Open-cmd.png"><img class="alignnone size-full wp-image-2147" title="ps04-Open-cmd" src="http://spalinux.com/wp-content/uploads/2012/04/ps04-Open-cmd.png" alt="" width="347" height="186" /></a></p>
<p>&nbsp;</p>
<p>หน้าจอ command prompt ของ Windows<br />
<a href="http://spalinux.com/wp-content/uploads/2012/04/ps05-cmd.png"><img class="alignnone size-full wp-image-2148" title="ps05-cmd" src="http://spalinux.com/wp-content/uploads/2012/04/ps05-cmd.png" alt="" width="437" height="122" /></a></p>
<p>&nbsp;</p>
<p>พิมพ์คำสั่ง cd Desktop เข้าสู่ Desktop ของผู้ใช้งานบน Windows</p>
<p>พิมพ์คำสั่ง dir เพื่อแสดงไฟล์ จะมีไฟล์ pscp.exe, putty.exe และ win-data.txt</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps06-cd-Desktop-dir1.png"><img class="alignnone size-full wp-image-2150" title="ps06-cd-Desktop-dir" src="http://spalinux.com/wp-content/uploads/2012/04/ps06-cd-Desktop-dir1.png" alt="" width="466" height="287" /></a></p>
<p>&nbsp;</p>
<h4>ถ่ายโอนไฟล์จาก Windows ไปยังลีนุกซ์</h4>
<p>รูปแบบการใช้คำสั่ง pscp เหมือนกับคำสั่ง cp คือ ตามด้วยไฟล์ต้นทางที่ต้องการจะถ่ายโอน เว้นวรรค ตามด้วยปลายทางที่ต้องการส่งไฟล์ไป</p>
<p>ตัวอย่าง ถ้าต้องการถ่ายโอนไฟล์จาก Windows เช่นในตัวอย่างนี้คือไฟล์ win-data.txt ไปยังลีนุกซ์ IP Address  192.168.5.62 ล็อกอินด้วย root สามารถทำได้โดย</p>
<pre>pscp win-data.txt root@192.168.5.62:</pre>
<p>สังเกตการระบุปลายทาง เป็นชื่อ user ตามด้วยเครื่องหมาย @ ตามด้วย IP ของปลายทาง ปิดท้ายด้วยเครื่องหมาย :  โดยพิมพ์ติดกันหมด ไม่มีเว้นวรรค</p>
<p>หากเป็นการล็อกอินเข้าไป IP นั้นเป็นครั้งแรก จะมีข้อความเตือนเกี่ยวกับ key เหมือนกับตอนใช้ putty</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps07-pscp-file-to-linux.png"><img class="alignnone size-full wp-image-2151" title="ps07-pscp-file-to-linux" src="http://spalinux.com/wp-content/uploads/2012/04/ps07-pscp-file-to-linux.png" alt="" width="629" height="208" /></a></p>
<p>&nbsp;</p>
<p>ไฟล์จะถูกถ่ายโอนไปไว้ใน HOME ของ root สามารถตรวจสอบได้โดยการใช้ PuTTY ล็อกอินเข้าไป ใช้คำสั่ง ls แสดงไฟล์ที่ถูกส่งไป</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps08-check-file-on-linux.png"><img class="alignnone size-full wp-image-2152" title="ps08-check-file-on-linux" src="http://spalinux.com/wp-content/uploads/2012/04/ps08-check-file-on-linux.png" alt="" width="457" height="135" /></a></p>
<h4></h4>
<h4>โหลดจากลีนุกซ์ ลง Windows</h4>
<p>หากไฟล์อยู่บนลีนุกซ์ เช่นอยู่ใน HOME ของ root ก็สามารถใช้คำสั่ง pscp เพื่อถ่ายโอนไฟล์มาใส่ใน Windows ได้</p>
<p>โดยระบุต้นทางเป็นไฟล์ที่อยู่บนลีนุกซ์ เว้นวรรคตามด้วยปลายทางคือไดเร็คทอรีบน Windows หากต้องการโหลดไฟล์มาใส่ในไดเร็คทอรีที่พิมพ์คำสั่ง (Desktop) ก็ระบุเป็นเครื่องหมายจุด .</p>
<p>เช่นต้องการโหลดไฟล์ชื่อ linux-file.txt ใน HOME ของ root บนลีนุกซ์ มายังไดเร็คทอรีปัจจุบัน พิมพ์คำสั่ง</p>
<pre>pscp root@192.168.5.62:linux-file.txt .</pre>
<p>หากไฟล์อยู่ในพาธอื่นเช่นต้องการโหลดไฟล์ /etc/passwd จากลีนุกซ์ สามารถระบุต้นทางเป็นพาธเต็ม เช่น root@192.168.5.62:/etc/passwd</p>
<p>ตัวอย่าง และผลลัพท์ที่ได้</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps09-pscp-file-from-linux.png"><img class="alignnone size-full wp-image-2153" title="ps09-pscp-file-from-linux" src="http://spalinux.com/wp-content/uploads/2012/04/ps09-pscp-file-from-linux.png" alt="" width="646" height="254" /></a></p>
<h4></h4>
<h4>ข้อมูลอ้างอิง</h4>
<p>&nbsp;</p>
<ul>
<li><a href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty/download.html" target="_blank">PuTTY Download Page</a></li>
<li><a title="View Details: ล็อกอินเข้าลีนุกซ์จาก Windows ด้วย PuTTY" href="http://spalinux.com/2012/04/login-to-linux-from-windows-by-putty" rel="bookmark">ล็อกอินเข้าลีนุกซ์จาก Windows ด้วย PuTTY</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/transfer-file-between-windows-and-linux-by-pscp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ล็อกอินเข้าลีนุกซ์จาก Windows ด้วย PuTTY</title>
		<link>http://spalinux.com/2012/04/login-to-linux-from-windows-by-putty</link>
		<comments>http://spalinux.com/2012/04/login-to-linux-from-windows-by-putty#comments</comments>
		<pubDate>Sat, 21 Apr 2012 10:58:59 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Authentication]]></category>
		<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[putty]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2131</guid>
		<description><![CDATA[หลังจากติดตั้ง คอนฟิกเน็ตเวิร์ค เช่น ตั้งค่า IP Address, Netmask, Gateway บนลีนุกซ์เสร็จเรียบร้อย การคอนฟิกที่เหลือ สามารถล็อกอินจากเครื่องอื่นมาทำงานได้โดยผ่านทาง SSH (Secure shell) ในบทนี้จะแนะนำโปรแกรม PuTTY  ซึ่งเป็นโปรแกรมที่สามารถใช้งานได้ฟรี รันบน Windows ให้สามารถล็อกอินเข้าลีนุกซ์เครื่องที่เราติดตั้งได้ ดาวน์โหลดโปรแกรม PuTTY ค้นหาคำว่า &#8220;PuTTY&#8221; จาก google หรือไม่ก็เข้าเว็บไซต์ PuTTY Download Page โดยตรงที่ http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html การใช้งาน PuTTY สามารถทำได้สองแบบคือดาวน์โหลดไฟล์ putty.exe มาไฟล์เดียว ก็สามารถใช้งานได้แล้ว หรือจะเลือกแบบ Windows installer เพื่อติดตั้งเป็นชุดโปรแกรม โดยจะมีโปรแกรมย่อยอื่นๆ ด้วย เพื่อความง่าย แนะนำให้ดาวน์โหลดแค่ putty.exe ไฟล์เดียว ด้านล่างหัวข้อ &#8220;For Windows on Intel x86&#8243; คลิ้กที่ลิ้งค์ [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจากติดตั้ง คอนฟิกเน็ตเวิร์ค เช่น ตั้งค่า IP Address, Netmask, Gateway บนลีนุกซ์เสร็จเรียบร้อย</p>
<p>การคอนฟิกที่เหลือ สามารถล็อกอินจากเครื่องอื่นมาทำงานได้โดยผ่านทาง SSH (Secure shell)</p>
<p>ในบทนี้จะแนะนำโปรแกรม PuTTY  ซึ่งเป็นโปรแกรมที่สามารถใช้งานได้ฟรี รันบน Windows ให้สามารถล็อกอินเข้าลีนุกซ์เครื่องที่เราติดตั้งได้</p>
<p><span id="more-2131"></span></p>
<h4>ดาวน์โหลดโปรแกรม PuTTY</h4>
<p>ค้นหาคำว่า &#8220;PuTTY&#8221; จาก google หรือไม่ก็เข้าเว็บไซต์ PuTTY Download Page โดยตรงที่</p>
<p>http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/01-PuTTY-Download-Page.png"><img class="alignnone size-full wp-image-2132" title="01-PuTTY-Download-Page" src="http://spalinux.com/wp-content/uploads/2012/04/01-PuTTY-Download-Page.png" alt="" width="804" height="323" /></a></p>
<p>การใช้งาน PuTTY สามารถทำได้สองแบบคือดาวน์โหลดไฟล์ putty.exe มาไฟล์เดียว ก็สามารถใช้งานได้แล้ว หรือจะเลือกแบบ Windows installer เพื่อติดตั้งเป็นชุดโปรแกรม โดยจะมีโปรแกรมย่อยอื่นๆ ด้วย</p>
<p>เพื่อความง่าย แนะนำให้ดาวน์โหลดแค่ putty.exe ไฟล์เดียว</p>
<p>ด้านล่างหัวข้อ &#8220;For Windows on Intel x86&#8243; คลิ้กที่ลิ้งค์ &#8220;putty.exe&#8221; เพื่อดาวน์โหลดไฟล์ สมมติว่าเซฟลง Desktop</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/02-putty.exe-on-Desktop.png"><img class="alignnone size-full wp-image-2133" title="02-putty.exe-on-Desktop" src="http://spalinux.com/wp-content/uploads/2012/04/02-putty.exe-on-Desktop.png" alt="" width="75" height="220" /></a></p>
<p>&nbsp;</p>
<p>เพียงแค่นี้ก็สามารถใช้โปรแกรม putty เพื่อล็อกอินเข้าเครื่องลีนุกซ์ได้แล้ว</p>
<p>ดับเบิ้ลคลิ้กที่ไอคอนไฟล์ putty.exe เพื่อรันโปรแกรม</p>
<p>หน้าจอของ PuTTY แสดงขึ้นมา เพื่อให้กรอกข้อมูล</p>
<ul>
<li>Host Name (or IP Address) ใส่ IP Address ของเครื่องลีนุกซ์ เช่น 192.168.5.62</li>
<li>Port ใส่ 22</li>
<li>Connection type: เลือก [x] SSH</li>
</ul>
<p>แล้วกด [Open] หรือกดปุ่ม [Enter]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/03-putty-session.png"><img class="alignnone size-full wp-image-2134" title="03-putty-session" src="http://spalinux.com/wp-content/uploads/2012/04/03-putty-session.png" alt="" width="456" height="442" /></a></p>
<p>&nbsp;</p>
<p>หากเป็นการล็อกอินด้วย SSH เข้าไปลีนุกซ์เครื่องที่ระบุ เป็นครั้งแรก หน้าจอจะแสดงเตือน &#8220;PuTTY Security Alert&#8221; เป็นข้อมูลเกี่ยวกับ key ต่างๆ ที่ใช้ใน  Secure Shell</p>
<p>กด [Yes] เพื่อยืนยันว่าถูกต้อง</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/p4-PuTTY-Security-Alert.png"><img class="alignnone size-full wp-image-2135" title="p4-PuTTY-Security-Alert" src="http://spalinux.com/wp-content/uploads/2012/04/p4-PuTTY-Security-Alert.png" alt="" width="389" height="237" /></a></p>
<p>&nbsp;</p>
<p>หมายเหตุ หากต้องการยืนยันความถูกต้องกับข้อมูลที่เตือนขึ้นมา สามารถตรวจสอบได้โดยเปรียบเทียบ fingerprint บนหน้าจอที่แสดง กับ Secure Shell ที่รันบนเซิร์ฟเวอร์</p>
<p>เช่นข้อมูลเกี่ยวกับ fingerprint ที่เตือนขึ้นมาแสดง</p>
<p>The server&#8217;s rsa2 key fingerprint is:<br />
ssh-rsa <span style="color: #0000ff;">2048 42:b2:98:95:57:14:aa:0a:6c:fa:e8:3a:7b:d8:0b:63</span></p>
<p>เปรียบเทียบกับ Secure Shell ที่รันบนเซิรฟ์เวอร์ ใช้คำสั่ง ssh-keygen -lf เพื่อดู fingerprint</p>
<pre>[root@cent6 ~]# <strong>ssh-keygen -lf /etc/ssh/ssh_host_rsa_key</strong>
<span style="color: #0000ff;">2048 42:b2:98:95:57:14:aa:0a:6c:fa:e8:3a:7b:d8:0b:63</span> /etc/ssh/ssh_host_rsa_key.pub (RSA)</pre>
<p>ผลที่ได้ต้องออกมาตรงกัน เป็นการยืนยันว่า เราล็อกอินเข้าไปในเครื่องที่เราต้องการจริง</p>
<p>หน้าจอให้ใส่ login as: ใส่ root และพิมพ์รหัสผ่านของ root ให้ถูกต้อง ก็จะสามารถล็อกอินเข้าสู่เครื่องลีนุกซ์ได้ เปรียบเสมือนเรานั่งทำงานอยู่ที่หน้าจอคอนโซลของเครื่องลีนุกซ์เลย</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/p5-login-as.png"><img class="alignnone size-full wp-image-2136" title="p5-login-as" src="http://spalinux.com/wp-content/uploads/2012/04/p5-login-as.png" alt="" width="449" height="104" /></a></p>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" target="_blank">PuTTY Download Page</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/login-to-linux-from-windows-by-putty/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เปลี่ยนวันเวลาบนลีนุกซ์ด้วยคำสั่ง date</title>
		<link>http://spalinux.com/2012/04/change-linux-date-time-using-command-date</link>
		<comments>http://spalinux.com/2012/04/change-linux-date-time-using-command-date#comments</comments>
		<pubDate>Mon, 16 Apr 2012 09:03:33 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2087</guid>
		<description><![CDATA[วันเวลาบนลีนุกซ์ถือเป็นเรื่องสำคัญ ที่สมควรจะตั้งให้ตรงกับเวลามาตรฐาน ไม่เช่นนั้น โปรแกรมต่างๆ จะเก็บเวลาไม่ถูกต้อง ทำให้การตรวจสอบการทำงานย้อนหลังมีปัญหา วิธีที่ดีที่สุดเพื่อให้เวลาของเครื่องลีนุกซ์ตรงกับเวลามาตรฐานคือติดตั้งและคอนฟิก NTP แต่ถ้าไม่สามารถคอนฟิกเช่น ไม่สามารถต่อเชื่อมอินเตอร์เน็ต เพื่อ sync กับ NTP Server มาตรฐาน สามารใช้คำสั่ง date  เพื่อเปลี่ยนเวลาของเครื่องลีนุกซ์ให้เป็นเวลาที่ต้องการ ใกล้เคียงกับเวลามาตรฐานได้ พิมพ์คำสั่ง date แบบไม่มีออปชั่นใดๆ ผลลัพธ์จะแสดงเวลาของเครื่อง ผู้ใช้ (user) ธรรมดาก็สามารถใช้คำสั่งนี้เพื่อดูเวลาของเครื่องได้ [alice@cent6 ~]$ date Mon Apr 16 18:25:03 ICT 2012 สมมติว่าเวลาจริงๆ ตอนนี้เป็นวันที่ 16 Apr 2012 เวลา 15:03 น. เราสามารถใช้คำสั่ง date เพื่อเปลี่ยนเวลาของเครื่องตามที่ต้องการได้ ล็อกอินด้วย root แล้วใช้คำสั่ง date เว้นวรรคตามด้วยวันที่เวลาตามรูปแบบ mmddHHMMCCYY โดย mm [...]]]></description>
			<content:encoded><![CDATA[<p>วันเวลาบนลีนุกซ์ถือเป็นเรื่องสำคัญ ที่สมควรจะตั้งให้ตรงกับเวลามาตรฐาน ไม่เช่นนั้น โปรแกรมต่างๆ จะเก็บเวลาไม่ถูกต้อง ทำให้การตรวจสอบการทำงานย้อนหลังมีปัญหา</p>
<p>วิธีที่ดีที่สุดเพื่อให้เวลาของเครื่องลีนุกซ์ตรงกับเวลามาตรฐานคือติดตั้งและคอนฟิก NTP</p>
<p>แต่ถ้าไม่สามารถคอนฟิกเช่น ไม่สามารถต่อเชื่อมอินเตอร์เน็ต เพื่อ sync กับ NTP Server มาตรฐาน</p>
<p>สามารใช้คำสั่ง date  เพื่อเปลี่ยนเวลาของเครื่องลีนุกซ์ให้เป็นเวลาที่ต้องการ ใกล้เคียงกับเวลามาตรฐานได้</p>
<p><span id="more-2087"></span></p>
<p>พิมพ์คำสั่ง date แบบไม่มีออปชั่นใดๆ ผลลัพธ์จะแสดงเวลาของเครื่อง ผู้ใช้ (user) ธรรมดาก็สามารถใช้คำสั่งนี้เพื่อดูเวลาของเครื่องได้</p>
<pre>[alice@cent6 ~]$ <strong>date</strong>
Mon Apr 16 18:25:03 ICT 2012</pre>
<p>สมมติว่าเวลาจริงๆ ตอนนี้เป็นวันที่ 16 Apr 2012 เวลา 15:03 น.</p>
<p>เราสามารถใช้คำสั่ง date เพื่อเปลี่ยนเวลาของเครื่องตามที่ต้องการได้</p>
<p>ล็อกอินด้วย root แล้วใช้คำสั่ง date เว้นวรรคตามด้วยวันที่เวลาตามรูปแบบ</p>
<pre>mmddHHMMCCYY</pre>
<p>โดย</p>
<ul>
<li><strong>mm</strong> คือตัวเลขระบุเดือน</li>
<li><strong>dd</strong> คือตัวเลขระบุวันที่</li>
<li><strong>HH</strong> คือตัวเลขระบุชั่วโมง</li>
<li><strong>MM</strong> คือตัวเลขระบุนาที</li>
<li><strong>CCYY</strong> คือตัวเลขปี คศ. เช่น 2012</li>
</ul>
<p>ตัวเลขทั้งหมดต้องพิมพ์เป็นตัวเลขสองหลัก ยกเว้นปีคศ. ถ้าเป็นตัวเลขตัวเดียวพิมพ์เลข 0 (ศูนย์) นำหน้า เช่นเดือน เมษายน ต้องพิมพ์เป็น 04</p>
<p>ตัวอย่างเช่นต้องการเปลี่ยนเวลาของเครื่องเป็น 16 Apr 2012 เวลา 15:03 น.</p>
<pre>[root@cent6 ~]# <strong>date 041615032012</strong>
Mon Apr 16 15:03:00 ICT 2012</pre>
<p>คำอธิบายตัวเลขตามลำดับ</p>
<ul>
<li><strong>04</strong> = เดือนเมษายน</li>
<li><strong>16</strong> = วันที่ 16</li>
<li><strong>15</strong> = 15 นาฬิกา</li>
<li><strong>03</strong> = 3 นาที</li>
<li><strong>2012</strong> = ปี คศ. 2012</li>
</ul>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a title="View Details: คอนฟิก NTP บนลินุกซ์" href="http://spalinux.com/2008/08/configure_ntp_on_linux" rel="bookmark">คอนฟิก NTP บนลินุกซ์</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/change-linux-date-time-using-command-date/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้งโปรแกรมเพิ่มบน CentOS 6.2</title>
		<link>http://spalinux.com/2012/04/how-to-install-program-on-centos-6-2</link>
		<comments>http://spalinux.com/2012/04/how-to-install-program-on-centos-6-2#comments</comments>
		<pubDate>Sat, 31 Mar 2012 18:11:42 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Filesystem]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[rpm]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1926</guid>
		<description><![CDATA[หลังจาก ติดตั้ง CentOS 6.2 : เลือกชุดซอฟต์แวร์ที่จะลง แล้ว หากต้องการติดตั้งซอฟต์แวร์หรือโปรแกรมเพิ่มเติม สามารถทำได้ดังนี้ ใส่แผ่นดีวีดีติดตั้ง แล้วใช้คำสั่ง mount เพื่อเรียกดูไฟล์ในแผ่น [root@cent6 ~]# mount /dev/dvd /mnt mount: block device /dev/sr0 is write-protected, mounting read-only ในแผ่นดีวีดีติดตั้ง CentOS 6.2 จะมีโครงสร้างไฟล์และไดเร็คทอรีดังนี้ [root@cent6 ~]# cd /mnt/ [root@cent6 mnt]# ls -l total 658 -rw-r--r--. 2 root root 14 Dec 16 09:39 CentOS_BuildTag drwxr-xr-x. 3 root root 2048 Dec 11 06:38 [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจาก <a href="http://spalinux.com/2012/03/centos-6-2-installation-select-a-set-of-software-to-install">ติดตั้ง CentOS 6.2 : เลือกชุดซอฟต์แวร์ที่จะลง</a> แล้ว หากต้องการติดตั้งซอฟต์แวร์หรือโปรแกรมเพิ่มเติม สามารถทำได้ดังนี้</p>
<p><span id="more-1926"></span></p>
<p>ใส่แผ่นดีวีดีติดตั้ง แล้วใช้คำสั่ง mount เพื่อเรียกดูไฟล์ในแผ่น</p>
<pre>[root@cent6 ~]# <strong>mount /dev/dvd /mnt</strong>
mount: block device /dev/sr0 is write-protected, mounting read-only</pre>
<p>ในแผ่นดีวีดีติดตั้ง CentOS 6.2 จะมีโครงสร้างไฟล์และไดเร็คทอรีดังนี้</p>
<pre>[root@cent6 ~]# <strong>cd /mnt</strong>/
[root@cent6 mnt]# <strong>ls -l</strong>
total 658
-rw-r--r--. 2 root root 14 Dec 16 09:39 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 Dec 11 06:38 EFI
-rw-r--r--. 2 root root 212 Dec 15 11:32 EULA
-rw-r--r--. 2 root root 18009 Dec 15 11:38 GPL
drwxr-xr-x. 3 root root 2048 Dec 11 06:38 images
drwxr-xr-x. 2 root root 2048 Dec 11 06:36 isolinux
drwxrwxr-x. 2 500 500 630784 Dec 16 09:43 Packages
-rw-r--r--. 2 root root 1354 Dec 9 19:58 RELEASE-NOTES-en-US.html
drwxr-xr-x. 2 root root 4096 Dec 16 09:46 repodata
-rw-r--r--. 2 root root 1706 Dec 9 19:57 RPM-GPG-KEY-CentOS-6
-rw-r--r--. 2 root root 1730 Dec 9 19:57 RPM-GPG-KEY-CentOS-Debug-6
-rw-r--r--. 2 root root 1730 Dec 9 19:57 RPM-GPG-KEY-CentOS-Security-6
-rw-r--r--. 2 root root 1734 Dec 9 19:57 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r--. 1 root root 3380 Dec 16 09:46 TRANS.TBL</pre>
<p>สำหรับ CentOS และลีนุกซ์ distribution ตระกูล RedHat เช่น RedHat Enterprise หรือ Fedora จะใช้คำสั่ง rpm ในการจัดการการติดตั้งลงโปรแกรม หรือลบโปรแกรมออก</p>
<p>โดยทางคนจัดทำโปรแกรม จะรวมไฟล์ที่ต้องใช้เข้าด้วยกันให้เป็นไฟล์ในรูปแบบ rpm เพื่อง่ายต่อการติดตั้ง</p>
<p>แต่หากโปรแกรมมีหลายส่วนหรือขนาดใหญ่มาก อาจมีการแยกเป็นไฟล์ rpm ย่อยต่างๆ</p>
<p>สำหรับในแผ่นดีวีดีติดตั้ง CentOS 6.2 จะรวมไฟล์ rpm ของโปรแกรมต่างๆ ที่นิยมใช้กัน อยู่ในไดเร็คทอรี Packages</p>
<p>ตัวอย่าง</p>
<pre>[root@cent6 mnt]# <strong>cd Packages/</strong>
[root@cent6 Packages]# <strong>ls -l</strong>
total 4058406
-rw-r--r--. 2 500 500 1437036 Dec 9 02:38 389-ds-base-1.2.9.14-1.el6.x86_64.rpm
-rw-r--r--. 4 500 500 375664 Dec 9 02:37 389-ds-base-libs-1.2.9.14-1.el6.i686.rpm
-rw-r--r--. 2 500 500 370484 Dec 9 02:38 389-ds-base-libs-1.2.9.14-1.el6.x86_64.rpm
-rw-r--r--. 2 500 500 215284 Dec 15 11:28 abrt-2.0.4-14.el6.centos.x86_64.rpm
-rw-r--r--. 2 500 500 95072 Dec 15 11:28 abrt-addon-ccpp-2.0.4-14.el6.centos.x86_64.rpm
-rw-r--r--. 2 500 500 64268 Dec 15 11:28 abrt-addon-kerneloops-2.0.4-14.el6.centos.x86_64.rpm
-rw-r--r--. 2 500 500 58428 Dec 15 11:28 abrt-addon-python-2.0.4-14.el6.centos.x86_64.rpm
-rw-r--r--. 2 500 500 55908 Dec 15 11:28 abrt-cli-2.0.4-14.el6.centos.x86_64.rpm
...</pre>
<p>หากไม่มีไฟล์ rpm ที่ต้องการในแผ่นแรก ลองใส่แผ่นที่สอง ดูใน Packages</p>
<p>แต่ถ้าไม่มีจริงๆ ก็ต้องค้นหา และดาวน์โหลดจากอินเตอร์เน็ต</p>
<p>&nbsp;</p>
<p>ในหลายๆ ครั้ง จะติดตั้งโปรแกรมที่ต้องการได้ จำเป็นต้องติดตั้งโปรแกรมอื่นก่อน เรียกว่าเป็นปัญหา dependencies ถือว่าเป็นข้อเสียของการใช้คำสั่ง rpm เพียงอย่างเดียวเพื่อการติดตั้งโปรแกรม เพราะต้องแก้ปัญหานี้เอง เมื่อเทียบกับการใช้คำสั่ง yum จะช่วยแก้ไขปัญหานี้ แล้วติดตั้งโปรแกรมที่จำเป็นให้กับเราเลย</p>
<p>อย่างไรก็ตาม โดยส่วนตัวผู้เขียนแล้ว ชอบใช้คำสั่ง rpm เพื่อติดตั้งโปรแกรมที่ต้องการ แก้ไขปัญหา และติดตั้งโปรแกรมที่ต้องติดตั้งก่อนเอง แล้วก็เก็บเป็นคู่มือไว้ ว่าต้องติดตั้งไฟล์ rpm อะไรก่อนหน้าหลัง ทั้งนี้เพื่อต้องการศึกษา รู้จักโปรแกรมได้มากขึ้น</p>
<p>&nbsp;</p>
<h4>ตัวอย่างการติดตั้งไฟล์ rpm (install)</h4>
<p>ในที่นี้ขอยกตัวอย่างการติดตั้งโปรแกรม git ซึ่งเป็นโปรแกรมประเภท revision control ที่เริ่มมีการใช้กันค่อนข้างมาก</p>
<p>โดยจะเป็นการติดตั้งจากแผ่นดีวีดีติดตั้งแผ่นที่ 1</p>
<p>ไฟล์ rpm เพื่อจะติดตั้ง git</p>
<pre>[root@cent6 Packages]# <strong>ls -l git*</strong>
-rw-r--r--. 2 500 500 4844240 Jul 6 2011 git-1.7.1-2.el6_0.1.x86_64.rpm</pre>
<p>ใช้คำสั่ง rpm -i ตามด้วยชื่อไฟล์ rpm เพื่อติดตั้ง (install)</p>
<pre>[root@cent6 Packages]# <strong>rpm -i git-1.7.1-2.el6_0.1.x86_64.rpm</strong>
<span style="color: #ff0000;">warning: git-1.7.1-2.el6_0.1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY</span>
<span style="color: #ff0000;">error: Failed dependencies</span>:
 perl(Error) is needed by git-1.7.1-2.el6_0.1.x86_64
 perl(Git) is needed by git-1.7.1-2.el6_0.1.x86_64
 perl-Git = 1.7.1-2.el6_0.1 is needed by git-1.7.1-2.el6_0.1.x86_64</pre>
<p>ผลที่ได้จะพบปัญหาสองอย่าง</p>
<ul>
<li>warning &#8230; NOKEY หมายถึงไม่สามารถตรวจสอบความถูกต้องของไฟล์ได้</li>
<li>error: Failed dependencies หมายถึงจะติดตั้งโปรแกรมนี้ได้ ต้องติดตั้งโปรแกรมอื่นก่อน</li>
</ul>
<p>ก่อนอื่นแนะนำให้แก้ไขปัญหาแรกก่อน วิธีการแก้ไขคือต้องติดตั้ง PGP PUBIC KEY เข้าไปในเครื่องก่อน เพื่อใช้ตรวจสอบความถูกต้องของไฟล์ rpm ที่อยู่ในแผ่น</p>
<p>ไฟล์ที่ใช้คือ RPM-GPG-KEY-CentOS-6 อยู่ไดเร็คทอรีนอกสุดของแผ่น ภายใต้ /mnt</p>
<pre>[root@cent6 mnt]# <strong>ls -l RPM-GPG-KEY-CentOS-6</strong>
-rw-r--r--. 2 root root 1706 Dec 9 19:57 RPM-GPG-KEY-CentOS-6</pre>
<p>ใช้คำสั่ง rpm &#8211;import เพื่อติดตั้ง (import) PUBLIC KEY</p>
<pre>[root@cent6 mnt]# rpm --import RPM-GPG-KEY-CentOS-6</pre>
<p>ต้องไม่มี error ใดๆ จากการรัน rpm</p>
<p>ลองติดตั้ง git อีกครั้ง</p>
<pre>[root@cent6 mnt]# <strong>cd Packages/</strong>
[root@cent6 Packages]# <strong>rpm -i git-1.7.1-2.el6_0.1.x86_64.rpm</strong>
<span style="color: #ff0000;">error: Failed dependencies</span>:
 perl(Error) is needed by git-1.7.1-2.el6_0.1.x86_64
 perl(Git) is needed by git-1.7.1-2.el6_0.1.x86_64
 perl-Git = 1.7.1-2.el6_0.1 is needed by git-1.7.1-2.el6_0.1.x86_64</pre>
<p>ข้อความ warning ก็จะหายไป</p>
<p>ส่วนการแก้ไขปัญหา Failed depenencies นั้น ต้องดูเป็นกรณีไป บางครั้่งก็จะขึ้นชื่อไฟล์ rpm ที่ต้องติดตั้งก่อนมาเลย เช่นในตัวอย่างนี้คือ perl-Git</p>
<p>แต่บางครั้งก็ขึ้นชื่อมาเฉยๆ เช่น perl(Error) เราต้องไปหาเองว่าไฟล์นี้ น่าจะอยู่ในไฟล์ rpm ไหน หลายๆ ครั้งก็ต้องค้นหาจาก google.com</p>
<p>เช่น perl(Error) ใช้ google ก็อาจจะค้นหาว่า &#8220;perl(Error) rpm centos 6.2&#8243; เป็นต้น</p>
<p>ลองแก้ไขปัญหาไปซักพัก มีประสบการณ์ก็พอจะเดาออกว่าอยู่ในไฟล์ rpm ไหน</p>
<p>เช่น perl(Error) ก็น่าจะมีไฟล์ perl-Error ลองดูในแผ่น ใช้คำสั่ง ls หาไฟล์ที่มีคำว่า perl-Error (พิมพ์อักษรตัวใหญ่เล็กให้เหมือนกัน)</p>
<pre>[root@cent6 Packages]# <strong>ls -l *perl-Error*</strong>
-rw-r--r--. 2 500 500 29420 Jul 3 2011 perl-Error-0.17015-4.el6.noarch.rpm</pre>
<p>ลองติดตั้งดู</p>
<pre>[root@cent6 Packages]# <strong>rpm -i perl-Error-0.17015-4.el6.noarch.rpm</strong>
[root@cent6 Packages]#</pre>
<p>ติดตั้งสำเร็จ ลองติดตั้ง git อีกครั้ง</p>
<pre>[root@cent6 Packages]# <strong>rpm -i git-1.7.1-2.el6_0.1.x86_64.rpm</strong>
<span style="color: #ff0000;">error: Failed dependencies</span>:
 perl(Git) is needed by git-1.7.1-2.el6_0.1.x86_64
 perl-Git = 1.7.1-2.el6_0.1 is needed by git-1.7.1-2.el6_0.1.x86_64</pre>
<p>สังเกตว่า perl(Error) หายไป แสดงว่าเราติดตั้งไฟล์ rpm ถูกต้อง</p>
<p>ส่วน perl(Git) หรือ perl-Git ก็ลองหาไฟล์ที่มีคำว่า perl-Git ดู</p>
<pre>[root@cent6 Packages]# <strong>ls -l *perl-Git*</strong>
-rw-r--r--. 2 500 500 28264 Jul 6 2011 perl-Git-1.7.1-2.el6_0.1.noarch.rpm</pre>
<p>ลองติดตั้งดู</p>
<pre>[root@cent6 Packages]# <strong>rpm -i perl-Git-1.7.1-2.el6_0.1.noarch.rpm</strong>
<span style="color: #ff0000;">error: Failed dependencies</span>:
 git = 1.7.1-2.el6_0.1 is needed by perl-Git-1.7.1-2.el6_0.1.noarch</pre>
<p>ปัญหาโลกแตก คือจะติดตั้ง git ก็จำเป็นต้องติดตั้ง perl-Git แต่พอลองติดตั้ง perl-Git ก็ฟ้องว่าต้องติดตั้ง git ก่อน</p>
<p>หากเจอปัญหาแบบนี้ ให้พิมพ์ชื่อไฟล์ เรียงกันไปเลย (คั่นด้วยเว้นวรรค)</p>
<pre>[root@cent6 Packages]# <strong>rpm -i git-1.7.1-2.el6_0.1.x86_64.rpm perl-Git-1.7.1-2.el6_0.1.noarch.rpm</strong></pre>
<p>เป็นอันติดตั้งสำเร็จ ลองใช้คำสั่ง git</p>
<pre>[root@cent6 Packages]# <strong>git --version</strong>
git version 1.7.1</pre>
<h4>ตัวอย่างการลบการติดตั้ง rpm (erase)</h4>
<p>หากไม่ต้องการโปรแกรมที่ติดตั้งด้วย rpm แล้ว สามารถลบออก (erase) ด้วยคำสั่ง rpm -e</p>
<p>ตัวอย่างการพยายามลบ rpm ของ git ออก</p>
<p>หมายเหตุ เวลาลบโปรแกรมให้ระบุเฉพาะชื่อโปรแกรมเท่านั้น ไม่ต้องระบุเวอร์ชั่น</p>
<pre>[root@cent6 Packages]# <strong>rpm -e git</strong>
<span style="color: #ff0000;">error: Failed dependencies</span>:
 git = 1.7.1-2.el6_0.1 is needed by (installed) perl-Git-1.7.1-2.el6_0.1.noarch</pre>
<p>ก็จะฟ้องคล้ายๆ กับตอนติดตั้ง แต่การลบจะกลับกันคือ คุณไม่สามารถลบโปรแกรมนี้ออกได้ เพราะโปรแกรมนี้ถูกใช้โดยโปรแกรมอื่นอยู่ (dependencies)</p>
<p>ลองลบ perl-Git ออก</p>
<pre>[root@cent6 Packages]# <strong>rpm -e perl-Git</strong>
<span style="color: #ff0000;">error: Failed dependencies</span>:
 perl(Git) is needed by (installed) git-1.7.1-2.el6_0.1.x86_64
 perl-Git = 1.7.1-2.el6_0.1 is needed by (installed) git-1.7.1-2.el6_0.1.x86_64</pre>
<p>วิธีการแก้ไขปัญหา เหมือนกับตอนติดตั้งคือระบุชื่อโปรแกรมต่อกันไปเลย</p>
<pre>[root@cent6 Packages]# <strong>rpm -e git perl-Git</strong>
[root@cent6 Packages]#</pre>
<p>หากคุณจำได้หรือทำเอกสารตอนติดตั้งไว้ อีกโปรแกรมที่สามารถลบออกได้คือ perl-Error</p>
<pre>[root@cent6 Packages]# rpm -e perl-Error</pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/how-to-install-program-on-centos-6-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>คำสั่ง fciv บน Windows เพื่อตรวจสอบความถูกต้องของไฟล์ (md5sum, sha1sum) ที่ดาวน์โหลดมา</title>
		<link>http://spalinux.com/2012/03/use-fciv-on-windows-to-verify-download-file-checksum-md5sum-sha1sum</link>
		<comments>http://spalinux.com/2012/03/use-fciv-on-windows-to-verify-download-file-checksum-md5sum-sha1sum#comments</comments>
		<pubDate>Sat, 24 Mar 2012 10:23:37 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[checksum]]></category>
		<category><![CDATA[md5sum]]></category>
		<category><![CDATA[sha1sum]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1783</guid>
		<description><![CDATA[ไฟล์โปรแกรมของลีนุกซ์ส่วนใหญ่ จะมีการตรวจสอบ checksum ควบคู่ไปด้วย โดยอาจเป็นไฟล์ให้ดาวน์โหลดแยกต่างหาก หรือใส่ไว้ใน Release Notes, Readme ทั้งนี้ก็เพื่อให้ผู้ใช้งาน สามารถตรวจสอบความถูกต้องของไฟล์ที่โหลดมาได้ เพราะบางไฟล์อาจมีขนาดใหญ่มาก เช่นไฟล์ ISO สำหรับติดตั้งลีนุกซ์ เราอาจดาวน์โหลดมาไม่ครบ หรือถ้าไปโหลดจาก mirror site ที่ไม่น่าไว้ว่างใจ อาจมีการแก้ไขไฟล์ระหว่างทางได้ ที่เคยใช้ส่วนใหญ่ก็เป็นคำสั่งบนลีนุกซ์ ไม่ว่าจะเป็น md5sum หรือ sha1sum แต่วันนี้ได้เจอคำสั่ง fciv เพื่อใช้ตรวจสอบ checksum ของไฟล์ บน Windows คลิ้กลิ้งค์  Download the File Checksum Integrity Verifier utility package now เพื่อดาวน์โหลด แล้วติดตั้งไฟล์ไว้ในโฟลเดอร์ เช่น D:\fciv\ ตัวอย่างการใช้คำสั่ง fciv เพื่อตรวจสอบไฟล์ ISO ของ CentOS 6.2 เปรียบเทียบกับ [...]]]></description>
			<content:encoded><![CDATA[<p>ไฟล์โปรแกรมของลีนุกซ์ส่วนใหญ่ จะมีการตรวจสอบ checksum ควบคู่ไปด้วย โดยอาจเป็นไฟล์ให้ดาวน์โหลดแยกต่างหาก หรือใส่ไว้ใน Release Notes, Readme</p>
<p>ทั้งนี้ก็เพื่อให้ผู้ใช้งาน สามารถตรวจสอบความถูกต้องของไฟล์ที่โหลดมาได้ เพราะบางไฟล์อาจมีขนาดใหญ่มาก เช่นไฟล์ ISO สำหรับติดตั้งลีนุกซ์ เราอาจดาวน์โหลดมาไม่ครบ หรือถ้าไปโหลดจาก mirror site ที่ไม่น่าไว้ว่างใจ อาจมีการแก้ไขไฟล์ระหว่างทางได้</p>
<p>ที่เคยใช้ส่วนใหญ่ก็เป็นคำสั่งบนลีนุกซ์ ไม่ว่าจะเป็น md5sum หรือ sha1sum</p>
<p>แต่วันนี้ได้เจอคำสั่ง fciv เพื่อใช้ตรวจสอบ checksum ของไฟล์ บน Windows</p>
<p><span id="more-1783"></span><br />
คลิ้กลิ้งค์  <a href="http://download.microsoft.com/download/c/f/4/cf454ae0-a4bb-4123-8333-a1b6737712f7/Windows-KB841290-x86-ENU.exe" target="_blank">Download the File Checksum Integrity Verifier utility package now</a> เพื่อดาวน์โหลด แล้วติดตั้งไฟล์ไว้ในโฟลเดอร์ เช่น D:\fciv\</p>
<p>ตัวอย่างการใช้คำสั่ง fciv เพื่อตรวจสอบไฟล์ ISO ของ CentOS 6.2</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/fciv-verify-CentOS-6.2.png"><img class="alignnone size-full wp-image-1784" title="fciv-verify-CentOS-6.2" src="http://spalinux.com/wp-content/uploads/2012/03/fciv-verify-CentOS-6.2.png" alt="" width="663" height="148" /></a></p>
<p>เปรียบเทียบกับ sha1sum ใน CentOS 6.2 Release Notes</p>
<p>sha1sum x86_64:<br />
<strong>d97377c83fab7493dbd1c2e04dab29c8ba6cd351</strong>  CentOS-6.2-x86_64-bin-DVD1.iso</p>
<p>ค่าที่คำนวณได้ตรงกับค่าใน Release Notes แสดงว่าไฟล์ที่เราดาวน์โหลดมานั้น ถูกต้อง ใช้งานได้</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://download.microsoft.com/download/c/f/4/cf454ae0-a4bb-4123-8333-a1b6737712f7/Windows-KB841290-x86-ENU.exe" target="_blank">Download the File Checksum Integrity Verifier utility package now</a></li>
<li><a href="http://support.microsoft.com/kb/841290" target="_blank">Availability and description of the File Checksum Integrity Verifier utility</a></li>
<li><a href="http://wiki.centos.org/Manuals/ReleaseNotes/CentOS6.2" target="_blank">CentOS 6.2 Release Notes</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/03/use-fciv-on-windows-to-verify-download-file-checksum-md5sum-sha1sum/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เขียนโปรแกรมโหลดเว็บเพจด้วย PHP cURL</title>
		<link>http://spalinux.com/2011/12/program-php-curl-to-load-web-page</link>
		<comments>http://spalinux.com/2011/12/program-php-curl-to-load-web-page#comments</comments>
		<pubDate>Thu, 22 Dec 2011 16:11:06 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[load web page]]></category>
		<category><![CDATA[php curl]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1574</guid>
		<description><![CDATA[จากที่ได้นำเสนอ วิธีการใช้ cURL เพื่อโหลดเว็บเพจ ซึ่งเป็นการรันคำสั่งแบบ command line มาแล้ว คราวนี้จะเป็นการเขียนโปรแกรม PHP โดยเรียกใช้ฟังก์ชั่นในโมดูล curl เพื่อโหลดเว็บเพจ ตรวจสอบโมดูล php curl ก่อนที่เราจะเรียกใช้ฟังก์ชั่นจากโมดูล curl เพื่อเขียนโปรแกรมใน PHP ได้นั้น จำเป็นต้องมีโมดูล curl ติดตั้งอยู่แล้ว ซึ่งสามารถตรวจสอบได้ด้วยการรันคำสั่ง php ตามด้วยออปชั่น &#8216;-m&#8217; ดูผลลัพธ์ที่ได้ ตัวอย่างการรันคำสั่ง php ด้วยออปชั่น &#8216;-m&#8217; เพื่อดูว่ามีโมดูล curl หรือไม่ [user1@dev ~]$ php -m &#124; grep curl curl ถ้าไม่มี ต้องติดตั้งเพิ่มเติม ซึ่งอาจจะด้วยการใช้ rpm หรือ yum ก็ได้ เริ่มใช้ฟังก์ชั่น curl เริ่มต้นด้วยตัวอย่างการเขียนโปรแกรมโดยใช้ฟังก์ชั่น curl [...]]]></description>
			<content:encoded><![CDATA[<p>จากที่ได้นำเสนอ <a href="http://spalinux.com/2011/12/using-curl-to-load-web-page">วิธีการใช้ cURL เพื่อโหลดเว็บเพจ</a> ซึ่งเป็นการรันคำสั่งแบบ command line มาแล้ว</p>
<p>คราวนี้จะเป็นการเขียนโปรแกรม PHP โดยเรียกใช้ฟังก์ชั่นในโมดูล curl เพื่อโหลดเว็บเพจ</p>
<p><span id="more-1574"></span></p>
<h4>ตรวจสอบโมดูล php curl</h4>
<p>ก่อนที่เราจะเรียกใช้ฟังก์ชั่นจากโมดูล curl เพื่อเขียนโปรแกรมใน PHP ได้นั้น จำเป็นต้องมีโมดูล curl ติดตั้งอยู่แล้ว ซึ่งสามารถตรวจสอบได้ด้วยการรันคำสั่ง php ตามด้วยออปชั่น &#8216;-m&#8217; ดูผลลัพธ์ที่ได้</p>
<p>ตัวอย่างการรันคำสั่ง php ด้วยออปชั่น &#8216;-m&#8217; เพื่อดูว่ามีโมดูล curl หรือไม่</p>
<pre>[user1@dev ~]$ <strong>php -m | grep curl</strong>
curl</pre>
<p>ถ้าไม่มี ต้องติดตั้งเพิ่มเติม ซึ่งอาจจะด้วยการใช้ rpm หรือ yum ก็ได้</p>
<h4>เริ่มใช้ฟังก์ชั่น curl</h4>
<p>เริ่มต้นด้วยตัวอย่างการเขียนโปรแกรมโดยใช้ฟังก์ชั่น curl แบบง่ายสุด เพื่อโหลดเว็บเพจ มีสามขั้นตอนคือ</p>
<ul>
<li>curl_init ระบุเว็บไซต์ที่ต้องการโหลด</li>
<li>curl_exec โหลดหน้าเว็บและแสดงผลลัพธ์</li>
<li>curl_close สิ้นสุดการใช้ curl</li>
</ul>
<p>เช่นต้องการโหลดเว็บ www.php.net</p>
<pre>[user1@dev ~]$ <strong>cat curl.php</strong>
&lt;?php

// Create a curl handle
$ch = <span style="color: #0000ff;">curl_init</span>('http://www.php.net');

// Execute
$ret = <span style="color: #0000ff;">curl_exec</span>($ch);

// Close handle
<span style="color: #0000ff;">curl_close</span>($ch);

?&gt;</pre>
<p>ทดลองรันโปรแกรมที่เขียน</p>
<pre>[user1@dev ~]$ <strong>php curl.php</strong>
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
&lt;head&gt;
 &lt;title&gt;PHP: Hypertext Preprocessor&lt;/title&gt;
 &lt;style type="text/css" media="all"&gt;
  @import url("http://static.php.net/www.php.net/styles/site.css");
  @import url("http://static.php.net/www.php.net/styles/phpnet.css");

 &lt;/style&gt;
...</pre>
<p>สังเกตว่าผลลัพธ์การโหลด หรือไฟล์เว็บเพจจะแสดงผลออกหน้าจอเลย เมื่อใช้ฟังก์ชั่น curl_exec() ไม่ได้เก็บไว้ในตัวแปร $ret</p>
<p>หากต้องการเก็บผลลัพธ์ที่ได้ไว้ในตัวแปรก่อน เพื่อนำไปประมวลผล ต้องใช้ฟังก์ชั่น curl_setopt เพื่อตั้งค่า CURLOPT_RETURNTRANSFER ให้เป็น true</p>
<pre>&lt;?php

// Create a curl handle
$ch = curl_init('http://www.php.net');

<span style="color: #0000ff;">// Set curl options</span>
<span style="color: #0000ff;">curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);</span>

// Execute
$ret = curl_exec($ch);

// Return
<span style="color: #0000ff;">print 'return = ' . $ret . "\n";</span>

// Close handle
curl_close($ch);

?&gt;</pre>
<p>ลองรันโปรแกรมหลังจากแก้ไขแล้ว</p>
<pre>[user1@dev ~]$ php curl.php
<span style="color: #0000ff;">return =</span> &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
&lt;head&gt;
 &lt;title&gt;PHP: Hypertext Preprocessor&lt;/title&gt;
 &lt;style type="text/css" media="all"&gt;
  @import url("http://static.php.net/www.php.net/styles/site.css");
  @import url("http://static.php.net/www.php.net/styles/phpnet.css");

 &lt;/style&gt;
...</pre>
<p>&nbsp;</p>
<h4>ดูรายละเอียดการโหลดเว็บเพจ</h4>
<p>หากต้องการดูข้อมูลรายละเอียดของการโหลดเว็บเพจ สามารถใช้ฟังก์ชั่น curl_getinfo() ได้</p>
<pre>&lt;?php

// Create a curl handle
$ch = curl_init('http://www.php.net');

// Set curl options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Execute
$ret = curl_exec($ch);

<span style="color: #0000ff;">// Get information about the last transfer</span>
<span style="color: #0000ff;">$get_info = curl_getinfo($ch);</span>

<span style="color: #0000ff;">print_r($get_info);</span>

// Close handle
curl_close($ch);

?&gt;</pre>
<p>ผลการรันโปรแกรม จะแสดงค่าเกี่ยวกับการโหลดเว็บเพจทั้งหมด</p>
<pre>[user1@dev ~]$ <strong>php curl.php</strong>
Array
(
    [url] =&gt; http://www.php.net
    [content_type] =&gt; text/html;charset=utf-8
    [http_code] =&gt; 200
    [header_size] =&gt; 382
    [request_size] =&gt; 50
    [filetime] =&gt; -1
    [ssl_verify_result] =&gt; 0
    [redirect_count] =&gt; 0
    [total_time] =&gt; 1.523659
    [namelookup_time] =&gt; 0.006906
    [connect_time] =&gt; 0.249598
    [pretransfer_time] =&gt; 0.249602
    [size_upload] =&gt; 0
    [size_download] =&gt; 45325
    [speed_download] =&gt; 29747
    [speed_upload] =&gt; 0
    [download_content_length] =&gt; -1
    [upload_content_length] =&gt; 0
    [starttransfer_time] =&gt; 0.551071
    [redirect_time] =&gt; 0
    [certinfo] =&gt; Array
        (
        )

)</pre>
<p>&nbsp;</p>
<p>แต่ถ้าต้องการแสดงเฉพาะบางค่า เช่นขนาดไฟล์เว็บเพจที่โหลด ต้องระบุ CURLINFO_SIZE_DOWNLOAD ไว้ในฟังก์ชั่น curl_getinfo() ด้วย</p>
<pre>&lt;?php

// Create a curl handle
$ch = curl_init('http://www.php.net');

// Set curl options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Execute
$ret = curl_exec($ch);

// Get information about the last transfer
$get_info_size_download = curl_getinfo($ch, <span style="color: #0000ff;">CURLINFO_SIZE_DOWNLOAD</span>);

<span style="color: #0000ff;">print 'SIZE_DOWNLOAD = ' . $get_info_size_download . "\n";</span>

// Close handle
curl_close($ch);

?&gt;</pre>
<p>ผลการรันโปรแกรม</p>
<pre>[user1@dev ~]$ <strong>php curl.php</strong>
SIZE_DOWNLOAD = 45325</pre>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://www.php.net/manual/en/intro.curl.php" target="_blank">PHP: cURL Functions &#8211; Manual</a></li>
<li><a href="http://spalinux.com/2011/12/using-curl-to-load-web-page">วิธีการใช้ cURL เพื่อโหลดเว็บเพจ</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/12/program-php-curl-to-load-web-page/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>วิธีการใช้ cURL เพื่อโหลดเว็บเพจ</title>
		<link>http://spalinux.com/2011/12/using-curl-to-load-web-page</link>
		<comments>http://spalinux.com/2011/12/using-curl-to-load-web-page#comments</comments>
		<pubDate>Fri, 16 Dec 2011 16:19:34 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[libcurl]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1565</guid>
		<description><![CDATA[จากที่เคยแนะนำ วิธีการใช้คำสั่ง wget รันเป็นคำสั่งบน comand line เพื่อโหลดเว็บเพจได้ มาครั้งนี้ ขอแนะนำอีกคำสั่งคือ cURL โปรแกรมทำหน้าที่คล้ายกันแต่มีคุณสมบัติมากกว่า แถม curl ยังมี library (libcurl) ที่ภาษาต่างๆ เช่น PHP นำไปพัฒนาสร้างเป็นฟังก์ชั่นให้เรียกใช้ในการเขียนโปรแกรมได้ เริ่มต้นการใช้ด้วยการรันคำสั่ง curl ตามด้วย URL ของเว็บไซต์ เช่นต้องการโหลดเว็บหน้าแรกของ www.apple.com [user1@dev ~]$ curl http://www.apple.com &#60;!DOCTYPE html&#62; &#60;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"&#62; &#60;head&#62; &#60;meta http-equiv="content-type" content="text/html; charset=utf-8" /&#62; &#60;meta name="Author" content="Apple Inc." /&#62; &#60;meta name="viewport" content="width=1024" /&#62; &#60;meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, [...]]]></description>
			<content:encoded><![CDATA[<p>จากที่เคยแนะนำ<a href="http://spalinux.com/2010/01/using_wget"> วิธีการใช้คำสั่ง wget</a> รันเป็นคำสั่งบน comand line เพื่อโหลดเว็บเพจได้ มาครั้งนี้ ขอแนะนำอีกคำสั่งคือ cURL โปรแกรมทำหน้าที่คล้ายกันแต่มีคุณสมบัติมากกว่า แถม curl ยังมี library (libcurl) ที่ภาษาต่างๆ เช่น PHP นำไปพัฒนาสร้างเป็นฟังก์ชั่นให้เรียกใช้ในการเขียนโปรแกรมได้</p>
<p><span id="more-1565"></span><br />
เริ่มต้นการใช้ด้วยการรันคำสั่ง curl ตามด้วย URL ของเว็บไซต์ เช่นต้องการโหลดเว็บหน้าแรกของ www.apple.com</p>
<pre>[user1@dev ~]$ <strong>curl http://www.apple.com</strong>
 &lt;!DOCTYPE html&gt;
 &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"&gt;
 &lt;head&gt;
 &lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;
 &lt;meta name="Author" content="Apple Inc." /&gt;
 &lt;meta name="viewport" content="width=1024" /&gt;
 &lt;meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, IE=9" /&gt;
 &lt;link id="globalheader-stylesheet" rel="stylesheet" href="http://images.apple.com/global/nav/styles/navigation.css" type="text/css" /&gt;
 &lt;title&gt;Apple&lt;/title&gt;
 ...</pre>
<p>ดีฟอลต์ผลลัพธ์ที่ได้จะแสดงผลออกทางหน้าจอ (stdout)</p>
<h4>ออปชั่น -o (output)</h4>
<p>ระบุออปชั่น &#8220;-o&#8217; ถ้าต้องการบันทึกผลลัพธ์เป็นไฟล์</p>
<pre>[user1@dev dev]$ <strong>curl -o apple-index.html http://www.apple.com</strong>
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
 Dload  Upload   Total   Spent    Left  Speed
 100  9346  100  9346    0     0  31031      0 --:--:-- --:--:-- --:--:-- 59151</pre>
<p>ไฟล์ผลลัพธ์ที่ได้</p>
<pre>[user1@dev dev]$ <strong>ls -l</strong>
 total 12
 -rw-r--r--. 1 user1 users 9346 Dec 16 22:56 apple-index.html

[user1@dev dev]$ <strong>head apple-index.html</strong>
 &lt;!DOCTYPE html&gt;
 &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"&gt;
 &lt;head&gt;
 &lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;
 &lt;meta name="Author" content="Apple Inc." /&gt;
 &lt;meta name="viewport" content="width=1024" /&gt;
 &lt;meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, IE=9" /&gt;
 &lt;link id="globalheader-stylesheet" rel="stylesheet" href="http://images.apple.com/global/nav/styles/navigation.css" type="text/css" /&gt;
&lt;title&gt;Apple&lt;/title&gt;</pre>
<h4>ออปชั่น -v (verbose)</h4>
<p>หากต้องการดูรายละเอียด ขั้นตอนการโหลดเว็บเพจ สามารถทำได้โดยการระบุออปชั่น &#8220;-v&#8221;</p>
<pre>[user1@dev dev]$ <strong>curl -v http://www.apple.com</strong>
 * About to connect() to www.apple.com port 80 (#0)
 *   Trying 118.214.125.15... connected
 * Connected to www.apple.com (118.214.125.15) port 80 (#0)
 &gt; GET / HTTP/1.1
 &gt; User-Agent: curl/7.21.7 (x86_64-redhat-linux-gnu) libcurl/7.21.7 NSS/3.12.10.0 zlib/1.2.5 libidn/1.22 libssh2/1.2.7
 &gt; Host: www.apple.com
 &gt; Accept: */*
 &gt;
 &lt; HTTP/1.1 200 OK
 &lt; Content-Type: text/html; charset=UTF-8
 &lt; Server: Apache/2.2.3 (Oracle)
 &lt; Cache-Control: max-age=531
 &lt; Expires: Fri, 16 Dec 2011 16:06:55 GMT
 &lt; Date: Fri, 16 Dec 2011 15:58:04 GMT
 &lt; Content-Length: 9346
 &lt; Connection: keep-alive
 &lt;
 &lt;!DOCTYPE html&gt;
 &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"&gt;
 &lt;head&gt;
 &lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;
 &lt;meta name="Author" content="Apple Inc." /&gt;
 &lt;meta name="viewport" content="width=1024" /&gt;
 &lt;meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, IE=9" /&gt;
 &lt;link id="globalheader-stylesheet" rel="stylesheet" href="http://images.apple.com/global/nav/styles/navigation.css" type="text/css" /&gt;
&lt;title&gt;Apple&lt;/title&gt;
 ...</pre>
<h4>ออปชั่น -h (help)</h4>
<p>ระบุออปชั่น &#8220;-h&#8221; เพื่อดูออปชั่นอื่นๆ พร้อมคำอธิบายคร่าวๆ</p>
<pre>[user1@dev ~]$ <strong>curl  --help</strong>
Usage: curl [options...] &lt;url&gt;
Options: (H) means HTTP/HTTPS only, (F) means FTP only
     --anyauth       Pick "any" authentication method (H)
 -a, --append        Append to target file when uploading (F/SFTP)
     --basic         Use HTTP Basic Authentication (H)
     --cacert FILE   CA certificate to verify peer against (SSL)
     --capath DIR    CA directory to verify peer against (SSL)
 -E, --cert CERT[:PASSWD] Client certificate file and password (SSL)
     --cert-type TYPE Certificate file type (DER/PEM/ENG) (SSL)
...</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://curl.haxx.se/" target="_blank">cURL groks URLs</a></li>
<li><a href="http://spalinux.com/2010/01/using_wget">วิธีการใช้คำสั่ง wget</a></li>
<li><a href="http://spalinux.com/2011/12/program-php-curl-to-load-web-page">เขียนโปรแกรมโหลดเว็บเพจด้วย PHP cURL</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/12/using-curl-to-load-web-page/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chat ในองค์กรด้วย Openfire และ Spark</title>
		<link>http://spalinux.com/2011/02/chat_in_office_using_openfire_and_spark</link>
		<comments>http://spalinux.com/2011/02/chat_in_office_using_openfire_and_spark#comments</comments>
		<pubDate>Sat, 05 Feb 2011 09:41:04 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[File Sharing]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[msn]]></category>
		<category><![CDATA[openfire]]></category>
		<category><![CDATA[spark]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1254</guid>
		<description><![CDATA[แม้จะมีโปรแกรม chat บนอินเตอร์เนตมากมายให้เลือกใช้ ทั้ง MSN, Google Talk, Yahoo Messenger หรือ Facebook แต่เนื่องด้วยเหตุผลทางด้านความปลอดภัยของข้อมูล ไม่ว่าจะเป็นข้อความที่คุยกัน หรือไฟล์ที่ส่งระหว่างกัน ในหลายๆ องค์กรจึงเลือกติดตั้งโปรแกรมที่อนุญาตให้พนักงานสามารถ chat สื่อสารกันภายในองค์กรเท่านั้น เพื่อที่จะใช้โปรแกรม chat (XMPP) ภายใน จำเป็นต้องติดตั้งโปรแกรมในสองส่วน คือฝั่ง server ในที่นี้เลือกโปรแกรม Openfire และโปรแกรมฝั่ง client ในที่นี้คือโปรแกรม Spark Server ติดตั้งโปรแกรม Openfire ทดสอบบนเซิร์ฟเวอร์ติดตั้ง Fedora 14 (x86_64) ดาวน์โหลดโปรแกรม Openfire เป็นไฟล์แบบ rpm (ล่าสุดที่เขียนคือเวอร์ชั่น openfire-3.6.4-1.i386.rpm) ใช้คำสั่ง rpm เพื่อติดตั้ง [root@fc14-64a ~]# rpm -ivh openfire-3.6.4-1.i386.rpm Preparing...                ########################################### [100%] [...]]]></description>
			<content:encoded><![CDATA[<p>แม้จะมีโปรแกรม chat บนอินเตอร์เนตมากมายให้เลือกใช้ ทั้ง MSN, Google Talk, Yahoo Messenger หรือ Facebook แต่เนื่องด้วยเหตุผลทางด้านความปลอดภัยของข้อมูล ไม่ว่าจะเป็นข้อความที่คุยกัน หรือไฟล์ที่ส่งระหว่างกัน ในหลายๆ องค์กรจึงเลือกติดตั้งโปรแกรมที่อนุญาตให้พนักงานสามารถ chat สื่อสารกันภายในองค์กรเท่านั้น</p>
<p>เพื่อที่จะใช้โปรแกรม chat (XMPP) ภายใน จำเป็นต้องติดตั้งโปรแกรมในสองส่วน คือฝั่ง server ในที่นี้เลือกโปรแกรม Openfire และโปรแกรมฝั่ง client ในที่นี้คือโปรแกรม Spark</p>
<p><span id="more-1254"></span></p>
<h4>Server ติดตั้งโปรแกรม Openfire</h4>
<p>ทดสอบบนเซิร์ฟเวอร์ติดตั้ง Fedora 14 (x86_64)</p>
<p>ดาวน์โหลดโปรแกรม Openfire เป็นไฟล์แบบ rpm (ล่าสุดที่เขียนคือเวอร์ชั่น openfire-3.6.4-1.i386.rpm)</p>
<p>ใช้คำสั่ง rpm เพื่อติดตั้ง</p>
<pre>[root@fc14-64a ~]# <strong>rpm -ivh openfire-3.6.4-1.i386.rpm
</strong>Preparing...                ########################################### [100%]
   1:openfire               ########################################### [100%]</pre>
<p>รันคำสั่ง service เพื่อรันเซอร์วิส openfire</p>
<pre>[root@fc14-64a ~]# <strong>service openfire start
</strong>Starting openfire:</pre>
<p>การใช้คำสั่ง service เพื่อรัน openfire จะไม่ขึ้นผลลัพธ์ว่า OK หรือ FAIL เหมือนกับ service อื่นๆ ต้องใช้คำสั่ง ps เพื่อดู process</p>
<pre>[root@fc14-64a ~]# <strong>ps -ef | grep openfire</strong></pre>
<p>ไม่มี process เกี่ยวกับ openfire เลย แสดงว่าต้องมีอะไรผิดพลาด</p>
<p>เมื่อมีปัญหาในการรัน openfire สามารถตรวจสอบได้จากไฟล์ที่อยู่ใน /opt/openfire/logs/</p>
<pre>[root@fc14-64a ~]# <strong>ls -l /opt/openfire/logs/
</strong>total 4
-rw-r--r-- 1 daemon daemon 85 Feb  4 22:49 nohup.out</pre>
<p>ตรวจสอบไฟล์ nohup.out เพื่อหาปัญหา</p>
<pre>[root@fc14-64a ~]# cat <strong>/opt/openfire/logs/nohup.out
</strong><span style="color: #ff0000;">nohup: failed to run command `/opt/openfire/jre/bin/java': No such file or directory</span></pre>
<p>โปรแกรม openfire ถูกพัฒนาด้วย java จำเป็นต้องใช้ jre ในการรัน ข้อความที่แสดงในไฟล์ nohup.out คือไม่สามารถเรียก java ได้</p>
<p>ปัญหานี้เนื่องมาจากไฟล์ rpm ที่ดาวน์โหลดมานั้น ใช้รันบนเครื่อง 32-bit (i386) รวมทั้งเวอร์ชั่น JRE ที่รวมมาในไฟล์ rpm ก็เป็น 32-bit ด้วย แต่เรานำมาติดตั้งบน OS แบบ 64-bit (x86_64)</p>
<p>ทดลองรัน java โดยตรง ก็ไม่ได้</p>
<pre>[root@fc14-64a ~]# <strong>/opt/openfire/jre/bin/java
</strong><span style="color: #ff0000;">-bash: /opt/openfire/jre/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory</span></pre>
<p>วิธีการแก้ไขปัญหาคือ ต้องติดตั้ง glibc เวอร์ชั่น 32-bit ด้วย</p>
<p>สำหรับ Fedora 14 (x86_64) ต้องติดตั้งไฟล์ rpm เพิ่มเติมคือ &#8220;glibc-2.12.90-17.i686.rpm&#8221; และ &#8220;nss-softokn-freebl-3.12.7-6.fc14.i686.rpm&#8221; ทั้งสองไฟล์ดาวน์โหลดได้จาก Fedora 14 (x86_64) Everything</p>
<pre>[root@fc14-64a ~]# <strong>rpm -ivh glibc-2.12.90-17.i686.rpm nss-softokn-freebl-3.12.7-6.fc14.i686.rpm
</strong>Preparing...                ########################################### [100%]
   1:nss-softokn-freebl     ########################################### [ 50%]
   2:glibc                  ########################################### [100%]</pre>
<p>ลองรัน java อีกครั้ง จะสามารถรันได้</p>
<pre>[root@fc14-64a ~]# <strong>/opt/openfire/jre/bin/java
</strong>Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)</pre>
<pre>...
...</pre>
<p>ใช้คำสั่ง service เพื่อรันเซอร์วิส openfire</p>
<pre>[root@fc14-64a ~]# <strong>/etc/init.d/openfire start
</strong>Starting openfire:</pre>
<p>ใช้คำสั่ง ps เพื่อดู process ของ openfire</p>
<pre>[root@fc14-64a ~]# ps -ef | grep openfire
daemon    1138     1  9 23:02 ?        00:00:02 /opt/openfire/jre/bin/java -server -DopenfireHome=/opt/openfire -Dopenfire.lib.dir=/opt/openfire/lib -classpath/opt/openfire/lib/startup.jar -jar /opt/openfire/lib/startup.jar</pre>
<p>ดูไฟล์ใน /opt/openfire/logs/ เพื่อดูสถานะการรันโปรแกรมในส่วนต่างๆ</p>
<pre>[root@fc14-64a ~]# <strong>ls -l /opt/openfire/logs/
</strong>total 68
-rw-r--r-- 1 daemon daemon   0 Feb  4 23:02 debug.log
-rw-r--r-- 1 daemon daemon   0 Feb  4 23:02 error.log
-rw-r--r-- 1 daemon daemon 129 Feb  4 23:03 info.log
-rw-r--r-- 1 daemon daemon  89 Feb  4 23:03 nohup.out
-rw-r--r-- 1 daemon daemon   0 Feb  4 23:02 warn.log</pre>
<pre>[root@fc14-64a ~]# <strong>cat /opt/openfire/logs/nohup.out
</strong>Openfire 3.6.4 [Feb 4, 2011 4:02:38 PM]</pre>
<pre>[root@fc14-64a ~]# <strong>cat /opt/openfire/logs/info.log
</strong>2011.02.04 16:02:38 Openfire 3.6.4 [Feb 4, 2011 4:02:38 PM]
2011.02.04 16:03:19 Admin console listening at http://127.0.0.1:9090</pre>
<h4>คอนฟิก openfire</h4>
<p>ไฟล์คอนฟิกหลักของ Openfire คือ /opt/openfire/conf/openfire.xml</p>
<pre>[root@fc14-64a ~]# ls -l /opt/openfire/conf/openfire.xml
-rw-r--r-- 1 <span style="color: #0000ff;">daemon </span><span style="color: #0000ff;">daemon</span> 1791 Feb  5 14:01 /opt/openfire/conf/openfire.xml</pre>
<p>owner และ group ของไฟล์ ต้องเป็น daemon เพื่อจะสามารถคอนฟิกโปรแกรมผ่านเว็บได้</p>
<p>เปิด browser เพื่อเริ่มคอนฟิก openfire โดยระบุพอร์ตเป็น 9090 เช่น <a href="http://192.168.1.1:9090/">http://192.168.1.1:9090/</a></p>
<p>หน้า <strong>Welcome to Setup</strong> เลือก English</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/01-Welcome_to_Setup.png"><img title="01-Welcome_to_Setup" src="http://spalinux.com/wp-content/uploads/2011/02/01-Welcome_to_Setup.png" alt="" width="600" height="549" /></a></p>
<p>หน้า <strong>Server Settings</strong></p>
<p>Domain: ใส่เป็นชื่อเคื่อง hostname หรือ IP Address ของเซิร์ฟเวอร์<br />
Admin Console Port: 9090<br />
Secure Admin Console Port: 9091</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/02-Server_Settings.png"><img title="02-Server_Settings" src="http://spalinux.com/wp-content/uploads/2011/02/02-Server_Settings.png" alt="" width="600" height="549" /></a></p>
<p> <br />
หน้า <strong>Database Settings</strong> เลือก [x] Standard Database Connection</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/03-Database_Settings.png"><img title="03-Database_Settings" src="http://spalinux.com/wp-content/uploads/2011/02/03-Database_Settings.png" alt="" width="600" height="549" /></a></p>
<p>หน้า <strong>Database Settings &#8211; Standard Connection</strong></p>
<p>Database Driver Presets: MySQL<br />
JDBC Driver Class: com.mysql.jdbc.Driver</p>
<p>Database URL: jdbc:mysql://[host-name]:3306/[database-name]</p>
<p>ระบุ [host-name] และ [database-name] ที่ใช้ ตัวอย่างเช่น</p>
<p>jdbc:mysql://localhost:3306/openfire</p>
<p>ระบุ Username, Password สำหรับเชื่อมต่อเข้า MySQL</p>
<p>Username: <span style="color: #0000ff;">openfire</span><br />
Password: <span style="color: #0000ff;">secret</span></p>
<p> ก่อนที่จะกดปุ่ม [Continue] เพื่อไปขั้นต่อไป ต้องสร้างฐานข้อมูลสำหรับ openfire ก่อน</p>
<h4> <a href="http://spalinux.com/wp-content/uploads/2011/02/04-Database_Settings-Standa.png"><img title="04-Database_Settings-Standa" src="http://spalinux.com/wp-content/uploads/2011/02/04-Database_Settings-Standa.png" alt="" width="600" height="549" /></a></h4>
<p> </p>
<h4>สร้างฐานข้อมูล Openfire</h4>
<p>สร้าง database บน MySQL และ GRANT สิทธิให้โปรแกรม openfire สามารถเชื่อมต่อได้ ตามข้อมูลที่ระบุด้านบน</p>
<pre>mysql&gt; <strong>CREATE DATABASE openfire;
</strong>Query OK, 1 row affected (0.01 sec)</pre>
<pre>mysql&gt; <strong>GRANT ALL ON openfire.* to openfire IDENTIFIED BY 'secret';
</strong>Query OK, 0 rows affected (0.00 sec)</pre>
<p>ใส่ข้อมูล table ลงฐานข้อมูล openfire โดยใช้ไฟล์ sql ที่อยู่ใน  /opt/openfire/resources/database/</p>
<pre>[root@fc14-64a ~]# <strong>cd /opt/openfire/resources/database/
</strong>[root@fc14-64a database]# <strong>ls -l</strong>
total 116
-rw-r--r--  1 daemon daemon 13480 May  2  2009 openfire_db2.sql
-rw-r--r--  1 daemon daemon 13763 May  2  2009 openfire_hsqldb.sql
-rw-r--r--  1 daemon daemon 12594 May  2  2009 openfire_mysql.sql
-rw-r--r--  1 daemon daemon 14024 May  2  2009 openfire_oracle.sql
-rw-r--r--  1 daemon daemon 13961 May  2  2009 openfire_postgresql.sql
-rw-r--r--  1 daemon daemon 14023 May  2  2009 openfire_sqlserver.sql
-rw-r--r--  1 daemon daemon 14097 May  2  2009 openfire_sybase.sql
drwxr-xr-x 21 daemon daemon  4096 Feb  4 22:47 upgrade</pre>
<pre>[root@fc14-64a database]# <strong>cat openfire_mysql.sql | mysql -u root -p openfire
</strong>Enter password:</pre>
<pre>ตรวจสอบ table ที่สร้างขึ้น</pre>
<pre>mysql&gt; <strong>CONNECT openfire;</strong></pre>
<pre>mysql&gt; <strong>SHOW TABLES;</strong>
+----------------------+
| Tables_in_openfire   |
+----------------------+
| ofExtComponentConf   |
| ofGroup              |
| ofGroupProp          |
| ofGroupUser          |
| ofID                 |
| ofMucAffiliation     |
| ofMucConversationLog |
| ofMucMember          |
| ofMucRoom            |
| ofMucRoomProp        |
| ofMucService         |
| ofMucServiceProp     |
| ofOffline            |
| ofPresence           |
| ofPrivacyList        |
| ofPrivate            |
| ofProperty           |
| ofPubsubAffiliation  |
| ofPubsubDefaultConf  |
| ofPubsubItem         |
| ofPubsubNode         |
| ofPubsubNodeGroups   |
| ofPubsubNodeJIDs     |
| ofPubsubSubscription |
| ofRemoteServerConf   |
| ofRoster             |
| ofRosterGroups       |
| ofSASLAuthorized     |
| ofSecurityAuditLog   |
| ofUser               |
| ofUserFlag           |
| ofUserProp           |
| ofVCard              |
| ofVersion            |
+----------------------+
34 rows in set (0.00 sec)</pre>
<p>หน้า <strong>Profile Settings</strong> เลือก [x] Default</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/05-Profile_Settings.png"><img title="05-Profile_Settings" src="http://spalinux.com/wp-content/uploads/2011/02/05-Profile_Settings.png" alt="" width="600" height="549" /></a><br />
หน้า <strong>Administrator Account</strong>  ใส่อีเมล์ และระบุที่ใช้ในการ login เข้าสู่หน้า Admin Console</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/06-Administrator_Account.png"><img title="06-Administrator_Account" src="http://spalinux.com/wp-content/uploads/2011/02/06-Administrator_Account.png" alt="" width="600" height="549" /></a><br />
หน้า <strong>Setup Complete</strong> กดปุ่ม [Login to the admin console]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/07-Setup_Complete.png"><img title="07-Setup_Complete" src="http://spalinux.com/wp-content/uploads/2011/02/07-Setup_Complete.png" alt="" width="600" height="549" /></a></p>
<p>หลังจากคอนฟิกผ่านหน้าเว็บเรียบร้อย ต้องรีสตาร์ตเซอร์วิส openfire</p>
<pre>[root@fc14-64a ~]# <strong>service openfire restart
</strong>Shutting down openfire:
Starting openfire:</pre>
<h4>Admin Console</h4>
<p>หลังจากคอนฟิกเรียบร้อย เปิด browser http://192.168.1.1:9090/ จะเข้าสู่หน้า Admin Console</p>
<p>ใส่ username เป็น &#8220;admin&#8221; และ password ตามที่ระบุไว้ตอนคอนฟิกหน้า Administrator Account</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/A0-Admin_Console.png"><img title="A0-Admin_Console" src="http://spalinux.com/wp-content/uploads/2011/02/A0-Admin_Console.png" alt="" width="600" height="549" /></a></p>
<p>หน้าจอ Service Information แสดงสถานะของโปรแกรม openfire</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/A1-Server_Information.png"><img title="A1-Server_Information" src="http://spalinux.com/wp-content/uploads/2011/02/A1-Server_Information.png" alt="" width="600" height="549" /></a></p>
<p>ไปที่ &#8220;Users/Groups&#8221; -&gt; &#8220;Create New User&#8221; เพื่อสร้าง user</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/A2-Create_User.png"><img title="A2-Create_User" src="http://spalinux.com/wp-content/uploads/2011/02/A2-Create_User.png" alt="" width="600" height="547" /></a></p>
<p>หน้า &#8220;Client Sessions&#8221; แสดงชื่อ user ที่ใช้งานอยู่</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/A3-Client_Sessions.png"><img title="A3-Client_Sessions" src="http://spalinux.com/wp-content/uploads/2011/02/A3-Client_Sessions.png" alt="" width="600" height="547" /></a></p>
<h4>Client: ติดตั้ง Spark </h4>
<p>สำหรับฝั่ง client ดาวน์โหลดและติดตั้งโปรแกรม Spark</p>
<p>เมื่อติดตั้งเสร็จเรียบร้อย รันขึ้นมา จะเป็นหน้าจอล็อกอิน</p>
<p>ใส่ Username, Password ตามที่สร้างไว้ บน Admin Console</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/S1-Spark_Login.png"><img title="S1-Spark_Login" src="http://spalinux.com/wp-content/uploads/2011/02/S1-Spark_Login.png" alt="" width="252" height="418" /></a></p>
<p>ระบุ Server เป็น IP Address ของเครื่องเซิร์ฟเวอร์ที่ติดตั้ง Openfire</p>
<p>หน้าจอพร้อมใช้งาน</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/S2-User_Online.png"><img title="S2-User_Online" src="http://spalinux.com/wp-content/uploads/2011/02/S2-User_Online.png" alt="" width="310" height="520" /></a></p>
<p>ตัวอย่างหน้าจอการสนทนา ระหว่างผู้ใช้</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/S1-Spark_Login.png"></a></p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/S3-Chat_Session.png"><img title="S3-Chat_Session" src="http://spalinux.com/wp-content/uploads/2011/02/S3-Chat_Session.png" alt="" width="500" height="400" /></a> </p>
<h4> </h4>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://www.igniterealtime.org/" target="_blank">Ignite Realtime: a real time collaboration community site</a></li>
<li><a href="http://www.mirror.in.th/osarchive/fedora/releases/14/Everything/x86_64/os/Packages/" target="_blank">Fedora 14 x86_64 &#8211; Everything</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/02/chat_in_office_using_openfire_and_spark/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

