Sunday, February 4, 2007

คำสั่ง Command for Linux

1. คำสั่ง ls
คำสั่ง ls เป็นคำสั่งที่ใช้ในการแสดงชื่อไฟล์หรือไดเร็คทอรี่ย่อยต่าง ๆ ที่อยู่ภายใต้ไดเร็คทอรี่ปัจจุบันหรือไดเร็คทอรี่ที่ระบุ
รูปแบบ: ls [option] [file_name | directory_name]
file_name คือ ชื่อไฟล์ที่ต้องการแสดง ในกรณีที่ต้องการระบุชื่อไฟล์
directory_name คือ ชื่อไดเร็คทอรี่ที่ต้องการแสดง ในกรณีที่ต้องการระบุชื่อไดเร็คทอรี่
option คือ ทางเลือกอื่นๆ ในการแสดงชื่อไฟล์ ที่สำคัญมีดังนี้
-l คือ การแสดงรายชื่อไฟล์แบบยาว ข้อมูลที่แสดงด้วยทางเลือกนี้จากซ้ายไป ขวา ได้แก่ ชนิดและโหมดของไฟล์ จำนวนลิงค์ ชื่อเจ้าของ ขนาดของไฟล์ วันที่ที่มีการแก้ไขไฟล์ครั้งล่าสุด และชื่อของไฟล์ ซึ่งถ้าไม่ใส่ทางเลือกนี้ แล้ว คำสั่ง ls ก็จะแสดงเฉพาะชื่อของไฟล์ออกมาก
-t แสดงชื่อของไฟล์ โดยเรียงลำดับที่แก้ไขไฟล์ครั้งสุดท้าย โดยจะแสดงชื่อของ ไฟล์ที่ได้รับการแก้ไขหลังสุดก่อน ถ้าไม่ใส่ทางเลือกนี้ ls ก็จะพิมพ์รายชื่อ ของไฟล์เรียงตามลำดับตัวอักษร
-d ใช้ในการบังคับให้แสดงข้อมูลของไดเร็คทอรีที่ระบุไว้ในส่วนของ argument ซึ่ง ถ้าไม่ใช้ทางเลือกนี้แล้ว คำสั่ง ls จะแสดงรายชื่อไฟล์ “ภายใต้” ไดเร็คทอรีที่ ระบุแทน
-a โดยปรกติแล้ว คำสั่ง ls จะไม่แสดงชื่อของไฟล์ที่มีชื่อขึ้นต้นด้วย “.” ออกมา
การใช้ทางเลือกนี้เพื่อที่จะให้แสดงรายชื่อไฟล์ทุกไฟล์ เช่น “.profile”
ตัวอย่าง: การใช้คำสั่ง ls กับ option -l
$ ls –l /usr/acct/dks/book
-rw-rw-r- - 1 dks usr 4680 Nov 9 14:51 /usr/acct/dks/book/chapter1
-rw-rw-r- - 1 dks usr 3178 Nov 10 12:58 /usr/acct/dks/book/chapter2
-rw-rw-r- - 1 dks usr 1685 Nov 10 16:07 /usr/acct/dks/book/chapter3
ตัวอย่าง: การใช้คำสั่ง ls กับ option -l และ -d
$ ls –ld /usr/acct/dks/book
drwxrwxr-x 2 dks usr 80 Nov 8 12:27 /usr/acct/dks/book


2. คำสั่ง pwd
คำสั่ง pwd ใช้สำหรับการแสดงชื่อไดเร็คทอรี่ปัจจุบัน
รูปแบบ: pwd

ตัวอย่าง: การแสดงว่าขณะนี้เราทำงานอยู่ที่ไดเร็คทอรี่ใด
$ pwd
/home/train1

3. คำสั่ง cd
คำสั่ง cd ใช้สำหรับการเปลี่ยนไดเร็คทอรี่
รูปแบบ: cd

การเคลื่อนย้ายพื้นที่ในการใช้งาน ทำได้โดยใช้คำสั่ง cd ตามด้วยชื่อไดเร็คทอรี่ที่เป็นจุดหมายปลายทาง โดยจะเขียนชื่อของไดเร็คทอรี่แบบสัมบูรณ์ หรือแบบสัมพันธ์ก็ได้ เช่น
ตัวอย่าง: เคลื่อนไปไดเร็คทอรี่ bin ซึ่งอยู่ภายใต้ไดเร็คทอรีปัจจุบัน
$ cd bin
ตัวอย่าง: แสดงการใช้เส้นทางแบบสัมบูรณ์ระบุจุดหมายปลายทาง
$ cd /root
ตัวอย่าง: กลับไปยัง Home ไดเร็คทอรี่
$ cd
ตัวอย่าง: การแสดงว่าขณะนี้เราทำงานอยู่ที่ไดเร็คทอรี่ใด
$ pwd
/home/train1
ในตัวอย่างนี้คงจะเห็นว่า ถ้าใช้คำสั่ง cd เฉย ๆ คือการระบุให้กลับไปยังไดเร็คทอรีบ้าน อันได้แก่ ไดเร็คทอรีแรกที่เข้ามาเมื่อเริ่มเข้าสู่ระบบ ซึ่งสามารถเปลี่ยนค่าของไดเร็คทอรีบ้านได้ด้วยการเปลี่ยนค่าของตัวแปรเชลล์ท ี่ชื่อ HOME ส่วน “..” คือสัญลักษณ์ที่แสดงถึงไดเร็คทอรี “พ่อ” อันได้แก่ ชั้นที่อยู่ข้างบนชั้นปัจจุบัน

4. คำสั่ง mkdir
คำสั่ง mkdir ใช้สำหรับสร้างไดเร็คทอรี่
รูปแบบ: mkdir
ตัวอย่าง: การสร้างไดเร็คทอรี่ชื่อ mydir อยู่ในไดเร็คทอรี่ปัจจุบัน
$ mkdir mydir

5. คำสั่ง rmdir
คำสั่ง rmdir เป็นคำสั่งสำหรับการลบไดเร็คทอรี่
รูปแบบ: rmdir
directory_name คือ ชื่อไดเร็คทอรี่ที่ต้องการลบ
ตัวอย่าง: การลบไดเร็คทอรี่ essays
$ rmdir essays

หมายเหตุ: ไดเร็คทอรี่ที่ต้องการลบต้องว่างก่อนที่จะลบ การทำให้ไดเร็คทอรี่ว่างให้ใช้คำสั่ง rm ลบไฟล์ภายในไดเร็คทอรี่นั้นๆ ก่อน

6. คำสั่ง mv
คำสั่ง mv เป็นคำสั่งสำหรับการเปลี่ยนชื่อไฟล์หรือไดเร็คทอรี่
รูปแบบ: mv
source คือ ชื่อไฟล์หรือชื่อไดเร็คทอรี่ต้นทาง
destination คือ ชื่อไฟล์หรือชื่อไดเร็คทอรี่ปลายทาง
ตัวอย่าง: การเปลี่ยนชื่อไฟล์ oldname ไปเป็น newname
$ mv oldname newname

7. คำสั่ง rm
คำสั่ง rm คำสั่งสำหรับการลบไฟล์
รูปแบบ: rm [option]
option คือทางเลือกที่จะใช้กับคำสั่ง rm โดยจะยกตัวอย่างที่ใช้บ่อยๆ ได้แก่
-r คือ การสั่งให้ลบไดเร็คทอรี่และไฟล์ภายใต้ไดเร็คทอรี่ (recursive)
-f คือ การสั่งยืนยันการลบ (force) จะไม่ขึ้น prompt ถามยืนยันการลบ
file_name คือ ชื่อไฟล์ที่ต้องการลบ
directory_name คือ ชื่อไดเร็คทอรี่ที่ต้องการลบ
ตัวอย่าง การลบมากกว่า 1 ไฟล์
$ rm oldbills oldnotes badjokes
ตัวอย่าง การลบไดเร็คทอรี่และไฟล์ภายใต้ไดเร็คทอรี่
$ rm -r ./bin
ตัวอย่าง การลบแบบยืนยันการลบ
$ rm –f oldbills oldnotes badjokes

8. คำสั่ง cat
คำสั่ง cat ใช้สำหรับการแสดงข้อมูลในไฟล์ cat ย่อมาจากคำว่า concatenate ซึ่งหมายถึงการนำมาต่อกัน
รูปแบบ: cat
file_name คือ ชื่อไฟล์ที่ต้องการแสดงผล
ตัวอย่าง: การนำไฟล์ /etc/motd เพียงไฟล์เดียวมาแสดงผล
$ cat /etc/motd
ตัวอย่าง: การนำเอาไฟล์ /etc/passwd มาต่อท้ายไฟล์ /etc/motd แล้วแสดง
ผลลัพธ์ออกมาทางจอภาพ
$ cat /etc/motd /etc/passwd
ตัวอย่าง: การนำไฟล์ /etc/motd เพียงไฟล์เดียวมาแสดงผลและต้องการเบี่ยงเบน ผลลัพธ์ไปเก็บที่ไฟล์อื่น
$ cat chapter1 > book
ตัวอย่าง: การนำเอาข้อมูลในไฟล์ chapter1 ต่อด้วย chapter2 และ chapter3
ไปเก็บไว้ในไฟล์ book
$ cat chapter1 chapter2 chapter3 > book
ตัวอย่าง: การนำเอาข้อมูลในไฟล์ chapter1 ต่อด้วย chapter2 และ chapter3
ไปเก็บไว้ในไฟล์ book โดยการเขียนคำสั่ง cat ให้สั้นลง
$ cat chapter[123] > book
หรือ
$ cat chapter? > book
หรือ
$ cat chapter* > book
ตัวอย่าง: การใช้คำสั่ง cat ในการสร้างข้อความบรรจุลงในไฟล์สำหรับกรณีที่ข้อความมี ขนาดสั่น ๆ เพียง 2-3 ประโยค คือ แทนที่จะใช้โปรแกรม editor ในการสร้าง ไฟล์ สามารถใช้ cat แทนได้ ซึ่งจะให้ผลรวดเร็วกว่ามาก ดังนี้
$ cat > quick
this is the first line
this is the second line
this is the last line
^D
$
ตามตัวอย่างนี้ คำสั่ง cat จะเตรียมรับข้อมูลจากเทอร์มินัล เพื่อเบี่ยงเบนข้อมูลนี้ไปเก็บไว้ในไฟล์ quick โดยเราจะต้องพิมพ์ข้อมูลลงไป และจบการพิมพ์ด้วยการกดปุ่ม ctrl-d ซึ่งเป็นการแสดงจุดสิ้นสุดของไฟล์ ถึงแม้ว่าการสร้างข้อมูลลงไฟล์แบบนี้จะรวดเร็วกว่าการใช้โปรแกรมเอดิเตอร์ แต่ต้องทราบไว้ว่าเราไม่สามารถย้อนกลับไปแก้คำผิดในบรรทัดก่อนได้ จึงต้องระมัดระวังขณะพิมพ์ให้ดี นั่นก็คือการใช้ cat ในกรณีนี้จะเหมาะสมเฉพาะการสร้างไฟล์ข้อมูลขนาดสั้นเท่านั้น

9. คำสั่ง more
คำสั่ง more ใช้ในกรณีที่ต้องการหยุดการแสดงผลข้อมูลทีละ 1 หน้า
รูปแบบ: more
file_name คือ ชื่อไฟล์ที่ต้องการแสดงผล
ตัวอย่าง: การใช้คำสั่ง more อ่านเท็กซ์ไฟล์
$ more poems
ถ้าไม่สามารถดูให้จบได้ใน 1 หน้าจอ, ให้ใช้คำสั่งต่อไปนี้เพื่อดูหน้าต่อไป
spacebar อ่านหน้าถัดไป
return หรือ enter อ่านบรรทัดต่อไป
b กลับไปหนึ่งหน้า
q ออกจาก more

10. คำสั่ง echo
คำสั่ง echo ใช้ในการแสดงข้อความที่ระบุไว้ใน argument เช่น ถ้าเราออกคำสั่ง
รูปแบบ: echo [argument]
argument คือ ข้อความหรือตัวแปรที่ต้องการให้แสดงผล
ตัวอย่าง: การแสดงข้อความทางจอภาพ
$ echo Hello world!
Hello world!
ตัวอย่าง: การแสดงค่าของตัวแปรเชลล์ โดยใส่เครื่องหมาย “$” ข้างหน้าชื่อตัวแปร
$ echo $HOME
/home/train1
ตัวอย่าง: นอกจากนี้ยังใช้ตรวจสอบค่าของ argument ที่เกิดจากคำย่อ
$ echo c*


11. คำสั่ง cp
คำสั่ง cp เป็นคำสั่งสำหรับการสำเนาไฟล์ (copy)
รูปแบบ: cp [option]
source คือ ชื่อไฟล์ต้นทางที่ต้องการทำสำเนา
destination คือ ชื่อไฟล์ปลายทางที่ต้องการสำเนาไป
ตัวอย่าง: oldname เป็นชื่อไฟล์ที่ต้องการ copy และจะสร้างไฟล์ใหม่ชื่อ newname และมีข้อมูลเหมือนต้นฉบับ
$ cp oldname newname

12. คำสั่ง chmod
คำสั่ง chmod ใช้สำหรับการกำหนดสิทธิ (permission) การใช้งานไฟล์หรือไดเร็คทอรี่
รูปแบบ: chmod [option] mode
file_name คือ ชื่อไฟล์ที่จะกำหนด permission
mode คือ ค่าในการกำหนด permission การใช้งานของไฟล์ ซึ่งมีการแบ่งกลุ่ม การให้ permission ไว้ 3 กลุ่มดังนี้
- user (u) ผู้ ใช้ (Username) ที่เป็นเจ้าของไฟล์
- group (g) ผู้ ใช้ (Username) ที่อยู่ใน group เดียวกัน
- others (o) ผู้ ใช้คนอื่นๆ
- all (a) ผู้ใช้ทุกกลุ่ม
หากเราใช้คำสั่ง “$ ls mycommand” จะเห็น permission ของไฟล์ mycommand มีรูปแบบดังนี้

-rwxrwxrwx 1 train1 users 0 Apr, 25 09:23 mycommand

จะเห็นว่าในคอลัมน์แรกจะแสดงค่า permission ของไฟล์ mycommand เป็น 3 กลุ่ม
กลุ่มที่ 1 คือ permission ของ user(u)
กลุ่มที่ 2 คือ group (g)
กลุ่มที่ 3 คือ others(o)
แต่ละกลุ่มจะมีค่า permission 3 ตัวดังนี้
r กำหนด permission ในการ read เรียกดูและอ่านไฟล์
w กำหนด permission ในการ write เปลี่ยนแปลงแก้ไขข้อมูลในไฟล์
x กำหนด permission ในการ execute ไฟล์นั้นเป็นโปรแกรม


ตัวอย่าง: การกำหนด permission ของไฟล์ mycommand ให้สามารถ read ได้ทุกคน
$ chmod a+r mycommand
ตัวอย่าง: การกำหนด permission ของไฟล์ mycommand ให้สามารถ execute
ซึ่งจะทำให้เราจะสามารถเรียก mycommand เป็นคำสั่งได้
$ chmod +x mycommand
การกำหนดโหมดของแฟ้มแบบสัมบูรณ์ (Absolute mode)
คือ การกำหนดโหมดแฟ้มโดยใช้ตัวเลข ดังนี้
User Group Other
r w x r w x r w x
4 2 1 4 2 1 4 2 1
การใช้คำสั่ง chmod โดยวิธีนี้จะตัวเลขในแต่ละกลุ่มรวมกัน permission ตัวใดไม่ต้องการให้กำหนดเป็นศูนย์ และนำมาเรียงต่อกัน เช่น 777 หรือ 751 หรือ 642 เป็นต้น
ตัวอย่าง: การกำหนด permission ของไฟล์ mycommand ให้สามารถ read ได้ทุกคน
$ chmod 444 mycommand
$ chmod a+r-wx mycommand
ตัวอย่าง: การกำหนด permission ของไฟล์ mycommand ให้สามารถ read และ write กับ ผู้ใช้ในกลุ่มเดียวกัน แลพผูใช้คนอื่นด้วย
$ chmod go+rw mycommand หรือ
$ chmod 766 mycommand

13. คำสั่ง > หรือ >>
เป็นคำสั่งสำหรับเปลี่ยนแปลงทิศทางของผลลัพธ์ให้ไปแสดงที่อุปกรณ์อื่น ๆ
ตัวอย่าง: ให้นำผลลัพธ์ที่ได้จากคำสั่ง “ls –l /bin” ไปเก็บไว้ที่ไฟล์ frombin
$ ls –l /bin > frombin
ตัวอย่าง: ให้นำผลลัพธ์ที่ได้จากคำสั่ง “ls –l /usr/bin” ไปต่อท้ายไฟล์ frombin
$ ls –l /usr/bin >> frombin

14. คำสั่ง | (pipe)
เป็นคำสั่งสำหรับส่งผลลัพธ์จากคำสั่งหนึ่งไปยังอีกคำสั่ง
ตัวอย่าง: ให้นำผลลัพธ์ที่ได้จากคำสั่ง “ls –l /bin” ส่งต่อไปที่คำสั่ง more
$ ls –l /bin | more
15. คำสั่ง grep
เป็นคำสั่งสำหรับเลือกบรรทัดที่มีคำที่สนใจประกอบอยู่
รูปแบบ: grep string [file1] [file2] …

ตัวอย่าง: ค้นหาบรรทัดที่มีคำว่า include จากไฟล์ gethost.c เมื่อพบให้แสดงบรรทัดนั้น ออกมา
$ grep include hethost.c
ตัวอย่าง: แสดงรายชื่อไฟล์ในไดเรกทรอรี่ /tmp แล้วส่งผลให้ grep แล้วค้นหาบรรทัดที่มีคำ ว่า ahmarn แสดงออกมา
$ ls -l /tmp | grep ahmarn

16. คำสั่ง ps
เป็นคำสั่งสำหรับตรวจสอบว่ามีโปรแกรมใดที่กำลังทำงานอยู่บ้าง
รูปแบบ: ps [option]
option
a คือ แสดง process ของผู้ใช้ทั้งหมด
u คือ แสดงรายชื่อของผู้ใช้
ตัวอย่าง: ps a ให้ผลลัพธ์ดังนี้
PID TTY STAT TIME COMMAND
351 1 S 0:00 bash
422 p2 R 0:05 vi chap3.txt
โดย PID แสดงหมายเลข process
TTY แสดงเทอร์มินอลที่ใช้ process นั้น
STAT แสดงสถานะของ process เช่น s=sleep r=run
TIME แสดงระยะเวลาที่ process นั้นใช้งานอยู่
COMMAND คำสั่งที่กำลังใช้อยู่

17. คำสั่ง kill
เป็นคำสั่งสำหรับยกเลิกคำสั่งหรือ process ที่กำลังทำอยู่
รูปแบบ: kill PID
ตัวอย่าง: kill 567 หรือ kill -9 567

18. คำสั่ง link
เป็นการอ้างอิงแฟ้มข้อมูลที่มีชื่อยาว ๆ ให้เป็นแฟ้มข้อมูลที่จำง่าย
รูปแบบ: ln [-s] source_file link_file
-s เป็นการสร้าง link ชนิด soft link ซึ่งประหยัดเนื้อที่มากกว่า hard link
ตัวอย่าง: ln -s /etc/passwd /pass
ls -l /pass = ls -l /etc/passwd

19. คำสั่ง gzip
เป็นคำสั่งสำหรับการบีบอัดไฟล์ให้มีขนาดเล็กลง แล้วได้ชื่อไฟล์เดิมมีนามสกุลเพิ่มเป็น .gz
รูปแบบ: gzip [-c] filename

-c ให้แสดงผลการบีบอัดทางจอภาพ
ตัวอย่าง: gzip xvdoss.ps จะได้ไฟล์ใหม่ชื่อ xvdoss.ps.gz
gzip /etc/passwd จะได้ไฟล์ใหม่ชื่อ /etc/passwd.gz
ถ้าต้องการให้ gzip แล้วได้ไฟล์ใหม่ ให้ทำดังนี้
gzip -c /etc/passwd > /tmp/passwd.gz

20. คำสั่ง gunzip
เป็นคำสั่งสำหรับขยายไฟล์ที่ถูกบีบอัดให้มีขนาดเท่าเดิม
รูปแบบ: gunzip [-c] filename

-c ให้แสดงผลการขยายไฟล์ทางจอภาพ
ตัวอย่าง: gunzip xvdoss.ps.gz จะได้ไฟล์เดิมชื่อ xvdoss.ps
gunzip /etc/passwd.gz จะได้ไฟล์เดิมชื่อ /etc/passwd
ถ้าต้องการให้ gunzip แล้วได้ไฟล์ใหม่ ให้ทำดังนี้
gunzip -c /etc/passwd.gz > /tmp/passwd

21. คำสั่ง vi
คำสั่ง vi (visual editor) เป็นโปรแกรม editor สำหรับสร้างหรือแก้ไขไฟล์ข้อมูล ประเภท Text file การทำงานของ vi แบ่งออกเป็น 2 โหมด คือ โหมดคำสั่ง (comand mode) และ โหมดใส่ข้อความ (text entry mode) การออกคำสั่งจะต้องอยู่ใน command mode ซึ่งมีการแบ่งกลุ่มของคำสั่งออกเป็น 2 ชนิด คือ คำสั่งแบบบรรทัด (line oriented command) และ คำสั่งแบบจอภาพ (visual oriented command)
รูปแบบ: vi [file_name]

file_name คือชื่อไฟล์ที่ต้องการสร้างหรือแก้ไข
ซึ่งก็จะทำการเช็คดูว่าไฟล์ที่เราระบุชื่อไว้นั้นมีตัวตนอยู่หรือไม่ ถ้ามี vi ก็จะเรียกไฟล์นั้นออกมาแก้ไข ถ้าไม่มีไฟล์นั้เนอยู่ vi ก็จะทำการสร้างไฟล์ให้ใหม่โดยอัตโนมัติ เราสามารถใส่ชื่อของไฟล์ได้มากกว่า 1 ชื่อ ซึ่งหมายความว่า vi จะเริ่มทำการแก้ไขไฟล์แรกก่อน และเมื่อผู้ใช้ออกคำสั่ง :n ก็จะเป็นการเรียกไฟล์ชื่อถัดไปมาทำการแก้ไข
เมื่อแรกเริ่มทำงานนั้น vi จะเข้าไปอยู่ในโหมดคำสั่ง ซึ่งผู้ใช้สามารถเปลี่ยนให้เป็นโหมดใส่ข้อความได้ ด้วยการออกคำสั่งที่ใช้ในการเพิ่มเติม หรือแก้ไขข้อความ อันได้แก่ คำสั่ง a,i,c,o, หรือ s เมื่อเราเพิ่มเติมหรือแก้ไขข้อความเสร็จแล้วก็ต้องกลับไปสู่โหมดคำสั่งใหม่ โดยการกดปุ่ม Esc ส่วนการเปลี่ยนจากโหมดคำสั่งแบบจอภาพให้เป็นแบบบรรทัดโดยการกดปุ่ม “:” หรือ “Q” ซึ่งหลังจากที่ทำคำสั่งแบบบรรทัดเสร็จแล้ว ก็จะกลับเข้าสู่โหมดแบบจอภาพโดยอัตโนมัติ ส่วนวิธีการเก็บข้อความที่แก้ไขเสร็จแล้วกลับลงในไฟล์ ก็ทำได้ด้วยการออกคำสั่ง zz หรือ :wq

โครงสร้างของคำสั่งใน vi คือ [จำนวนเลข] คำสั่ง [จำนวนเลข] operand
ทำให้เราสามารถระบุจำนวนครั้งที่ต้องการกระทำคำสั่งนั้นได้ โดยการใส่จำนวนเลขไว้ข้างหน้า หรือตรงกลาง หรือทั้ง 2 แห่งเลยก็ได้ ซึ่งถ้าเราระบุไว้ทั้ง 2 แห่งก็จะกระทำคำสั่งเป็นจำนวนครั้งเท่ากับผลคูณของจำนวนเลขทั้ง 2 ส่วน operand คือ การระบุส่วนของข้อมูลที่จะกระทำคำสั่ง เช่น ระบุให้ทำกับคำ หรือประโยค เป็นต้น เช่น การออกคำสั่ง 3 dw หรือ d3w จะเป็ฯการลบคำไป 3 คำ
(d คือ delete, w คือ word) และถ้าออกคำสั่ง 3d2w ก็จะลบออกไป 6 คำ เป็นต้น
การเลื่อน cursor
h เลื่อน cursor ไปทางซ้าย 1 ตัวอักษร
j เลื่อน cursor ไปบรรทัดถัดไป
k เลื่อน cursor บรรทัดที่อยู่ข้างบน
l เลื่อน cursor ไปทางขวา 1 ตัวอักษร
^ เลื่อน cursor ไปยังต้นบรรทัดที่เป็นตัวอักษร
o เลื่อน cursor ไปยังต้นบรรทัดไม่ว่าต้นบรรทัดจะเป็นตัวอักษรหรือไม่
$ เลื่อน cursor ไปยังปลายบรรทัด
w เลื่อน cursor ไปยังตัวอักษรแรกของคำถัดไป
b เลื่อน cursor ไปยังตัวอักษรแรกของคำปัจจุบัน แต่ถ้าในปัจจุบันเคอร์เซอร์อยู่ที่ตำแหน่ง
ตัวอักษรแรกอยู่แล้วก็จะเลื่อนไปยังตัวอักษรแรกของคำที่แล้ว
e เลื่อน cursor ไปยังวตัวอักษรสุดท้ายของคำในปัจจุบัน แต่ถ้าในปัจจุบัน cursor
อยู่ที่ตำแหน่งตัวอักษรสุดท้ายอยู่แล้ว ก็จะเลื่อนไปยังตัวอักษรสุดท้ายของคำถัดไป
( เลื่อน cursor ไปยังตัวอักษรแรกของประโยคถัดไป
) เลื่อน cursor ไปยังตัวอักษรแรกของประโยคปัจจุบัน หรือประโยคที่แล้ว
ถ้าเรากำลังอยู่ที่ตัวอักษรแรกของประโยคอยู่แล้ว
} เลื่อน cursor ไปยังตัวอักษรแรกของย่อหน้าถัดไป
{ เลื่อน cursor ไปยังตัวอักษรแรกของย่อหน้า
H เลื่อน cursor ไปยังตำแหน่งแรกของจอภาพ
M เลื่อน cursor ไปยังตำแหน่งกลางของจอภาพ
L เลื่อน cursor ไปยังตำแหน่งสุดท้ายของจอภาพ
^D หมุนจอภาพลงครึ่งจอ
^U หมุนจอภาพขึ้นครึ่งจอ
^F หมุนจอภาพไปข้างหน้า 1 จอ
^B หมุนจอภาพไปข้างหลัง 1 จอ
การแก้ไขข้อความในโหมดคำสั่งแบบจอภาพ
x ลบตัวอักษร ณ ตำแหน่ง cursor
c แก้ไขตัวอักษรให้เป็นตัวอักษรใหม่
s แก้ไขตัวอักษรให้เป็นข้อความใหม่ กดปุ่ม Esc เมื่อใส่ข้อความใหม่เรียบร้อยแล้ว
การค้นหาข้อความในโหมดคำสั่งแบบจอภาพ
/ข้อความ ค้นหาข้อความจากตำแหน่ง cursor เป็นต้นไป
? ข้อความ ค้นหาข้อความจากตำแหน่ง cursor ย้อนหลัง
/^ข้อความ ค้นหาข้อความจากตำแหน่ง cursor เป็นต้นไป
/ข้อความ$ ค้นหาข้อความจากตำแหน่ง cursor เป็นต้นไป
แต่ข้อความจะอยู่ในส่วนสุดท้ายของบรรทัด
?^ ข้อความ ค้นหาข้อความจากตำแหน่ง cursor เป็นต้นไป
แต่เป็นการค้นหาจากตำแหน่ง cursor ย้อนหลัง
? ข้อความ$ ค้นหาข้อความจากตำแหน่ง cursor เป็นต้นไป
แต่ข้อความจะอยู่ในส่วนสุดท้ายของบรรทัด
เป็นการค้นหาย้อนหลัง
/ ค้นหาข้อความที่ระบุไว้แล้วต่อไป
? ค้นหาข้อความที่ระบุไว้แล้วย้อนหลังต่อไป
n ค้นหาข้อความในทิศทางเดิม
N ค้นหาข้อความเดิมในทิศทางที่สลับกับของเดิม
“ ยกเลิกการค้น โดยให้ cursor กลับไปอยู่ที่ตำแหน่งเดิมก่อนที่จะเริ่มมีการค้นหา
การเพิ่มเติมข้อความ
a เติมข้อความใหม่ต่อท้ายตำแหน่ง cursor
i เติมข้อความใหม่ตอนหน้าตำแหน่ง cursor
A หรือ $a เติมข้อความใหม่ตอนท้ายของบรรทัดปัจจุบัน
I หรือ ^i เติมข้อความตอนหน้าของบรรทัดปัจจุบัน
o เติมบรรทัดใหม่ตอนล่างของบรรทัดปัจจุบัน
O เติมข้อความใหม่ตอนบนของบรรทัดปัจจุบัน

การเคลื่อนย้ายบรรทัด
รูปแบบ n1,n2mn3
ตัวอย่าง : $-3, $0
การเก็บข้อมูลลงในโหมดแบบบรรทัด
ใช้ w ตามด้วยชื่อไฟล์
ถ้าต้องการยกเลิกการใช้งาน ใช้ q
ถ้าต้องการยกเลิกการใช้งานขณะที่มีการแก้ไขไปแล้ว ใช้ q!
กลับไปจุดตั้งต้นก่อนแก้ไข ใช้ e!
การ copy และเคลื่อนย้ายข้อความ : การใช้คำสั่งแบบจอภาพ
d ลบ
c แก้ไข
y yank
operand เป็นตัวกำหนดว่าจะทำคำสั่งนั้นกับข้อมูลใหญ่แค่ไหน
w สำหรับคำปัจจุบัน
b สำหรับคำที่แล้ว
) สำหรับประโยคปัจจุบัน
( สำหรับประโยคที่แล้ว
} สำหรับย่อหน้าปัจจุบัน
{ สำหรับย่อหน้าที่แล้ว
การยกเลิกคำสั่งและการทำคำสั่งซ้ำ
u ยกเลิกคำสั่งที่แล้วที่เพิ่มทำไป
U ยกเลิกคำสั่งทั้งหมดที่ทำกับบรรทัดนั้น แต่มีข้อแม้ว่าเราจะต้องอยู่ในบรรทัดเดิม
หลังจากที่ออกคำสั่งแล้ว โดยไม่ได้เคลื่อนไปที่ไหนก่อน กระทำคำสั่งที่ทำไปแล้วซ้ำ โดยอาจจะทำซ้ำกับส่วนอื่น ๆ ของไฟล์ก็ได้
การรวมและแยกบรรทัด
การรวมบรรทัดใน vi นี้ใช้คำสั่ง J
การเรียกคำสั่งเชลล์จาก vi
กดปุ่ม :! ตามด้วยคำสั่งที่เราต้องการ
option ในการใช้ vi
การกำหนด option ใช้คำสั่ง set หรือ se ในโหมดคำสั่งแบบบรรทัด
:se option
:se no option

22. คำสั่ง pico
คำสั่ง pico เป็น text editor อย่างง่ายของ Unix User ของ pine นิยมใช้ pico เพราะเป็น editor สำหรับโปรแกรม pine สามารถใช้ menu เป็นคำสั่งอยู่ที่ด้านล่างของหน้าจอ
รูปแบบ: pico [file_name]
file_name คือชื่อไฟล์ที่ต้องการสร้าง เรียกดู หรือแก้ไข
ตัวอย่าง: แสดงการเริ่มใช้ pico โดยพิมพ์ pico ที่ $ prompt.
$ pico

ในทุกคำสั่งใช้, ^ เป็น "ctrl" key, กด ctrl key แล้วกดตัวอักษรคำสั่ง:
^V - ย้ายไปหน้าจอถัดไป
^Y - ย้ายไปหน้าจอก่อนหน้านี้
Ctrl^ - marks text เริ่มต้น ที่ต้องการ cut และ/หรือ paste
^K - copies หรือ deletes highlighted text หรือ text ที่ cursor อยู่
^U - uncuts or pastes text ที่อยู่ใน buffer
^O - Saves text
^X - Exits pico

23. คำสั่ง df
คำสั่ง df (disk free) แสดงพื้นที่ disk ที่เหลือ

24. คำสั่ง du
คำสั่ง du (disk usage) เป็นคำสั่งแสดงการใช้งาน disk ที่ใช้ไปแล้ว หน่วยเป็นกิโลไบท์
รูปแบบ: du [option]
option:
-a แสดงข้อมูลการใช้พื้นที่ disk ของไฟล์ด้วย (ปกติจะแสดงเฉพาะของไดเร็คทอรี่)
-b แสดงข้อมูลการใช้พื้นที่ disk หน่วยเป็นไบท์
-s แสดงเฉพาะผลรวม (summarize) ของการใช้งาน disk แต่ละไฟล์หรือ
ไดเร็คทอรี่เท่านั้น
ตัวอย่าง: การแสดงการใช้งาน disk จาก Home ไดเร็คทอรี
$ du -s *

25. คำสั่ง mount
คำสั่งสำหรับเรียกใช้ File System โดยปกติ Linux จะมี การ mounting และ การ umount ของ filesystems โดยอัตโนมัติ โดยผู้ใช้ไม่ต้องจัดการอะไรแต่เมื่อต้องการ mount devices ไปที่ file system เอง, เช่น เมื่อจะเรียกใช้ floppy drive หรือ CD-ROM เราจะต้องใช้คำสั่ง mount

รูปแบบ: mount -t fstype device mountpoint
fstype หมายถึง ชนิดของ filesystem บน device ที่จะ mount;
เช่น floppy disk มีไฟล์ Windows 95 ชนิด "vfat"
device หมายถึง special device file ซึ่งชี้ไปที่ device ตามด้วย floppy เช่น,
/dev/fd0 device
mountpoint หมายถึง location ของ filesystem ที่ device จะถูก mount ;
location อยู่ได้ทุกที่ใน system แต่สำหรับ floppies จะอยู่ที่ /mnt/floppy ดังนั้นการ mount Windows 95 floppy disk ใน drive "A:" และทำให้ readable จาก Linux, ใช้คำสั่ง:
$ mount -t vfat /dev/fd0 /mnt/floppy
แล้วจะสามารถแสดงชื่อไฟล์ใน drive “A:” ได้โดยคำสั่ง :
$ ls /mnt/floppy

CD-ROM Drives
การ Mount CD-ROM drive ทำได้เหมือนกับ การ mount floppy disk หรือ cartridge เพราะ CD-ROM discs มักใช้ "high Sierra" ISO-9660 file format, อย่างไรก็ดีต้องบอก Linux ว่าจะใช้ "iso9660" filesystem format:
$ mount -t iso9660 /dev/cdrom /mnt/cdrom
file บน CD-ROM disc สามารถ access โดยการ copy จาก directory /mnt/cdrom แต่ Linux ไม่อนุญาตให้ copy ไปที่ directory /mnt/cdrom เนื่องจาก CD-ROM disc เป็น read-only medium!

การ Copy File จาก Windows 95/98 ไปที่ Linux
การ Copy file จาก operating system แรกใน dual-boot machine ไปที่ Linux partition เราต้องสร้าง mount point ไปที่ mount Windows disk :
$ mkdir /DriveC
แล้วใช้คำสั่ง mount เพื่อ mount device ที่จำเป็น , ใช้ filesystem ชนิด "vfat" (Windows 95)
ตาราง common disk devices
Special File
Device
/dev/fd0
First floppy drive
/dev/fd1
Second floppy drive
/dev/cdrom
CD-ROM drive
/dev/hda[1-16]
First hard drive (IDE 1,1) and partitions 1-16
/dev/hdb[1-16]
Second hard drive (IDE 1,2) and partitions 1-16
/dev/sda[1-16]
First hard drive (SCSI 0) and partitions 1-16
/dev/sdb[1-16]
Second hard drive (SCSI 1) and partitions 1-16
/dev/sdc[1-16]
Third hard drive (SCSI 2) and partitions 1-16
/dev/sdd[1-16]
Fourth hard drive (SCSI 3) and partitions 1-16
สมมติว่า Windows อยู่บน IDE hard drive แรกใน computer system บน partition แรก
การ mount Windows hard drive ใน Linux ใช้ :
$ mount -t vfat /dev/hda1 /DriveC
Windows drive ถูก mount แล้ว สามารถ list content ภายใน drive โดยพิมพ์ :
$ ls /DriveC
หรือ จะ list file ทั้งหมด ใน directory "C:Windows" ใช้ :
$ ls /DriveC/windows

26. คำสั่ง umount
คำสั่ง umount เป็นคำสั่งที่ใช้ในการเลิกติดต่อ (umount) File System
รูปแบบ: umount [option] [device | dir]
option คือ ทางเลือกสำหรับการ unmount โดยมีทางเลือกที่สำคัญจะยกตัวอย่างดังนี้
-h พิมพ์ Help
-a สั่งเลิกติดต่อ File System ที่มีรายการอยู่ในไฟล์ /dev/mtab ทั้งหมด
-f บังคับใช้คำสั่ง umount
device คือ File System ที่ต้องการ unmount เช่น /dev/hda1 , /dev/hda2, /dev/hdb1, /dev/hdc1
dir คือ ไดเร็คทอรี่ที่สั่งให้ติดต่อกับ File System

การใช้คำสั่ง umount สามารถระบุไดเร็คทอรี่ที่ติดต่อกับ File System หรือ ระบุชื่อ File System โดยตรงก็ได้
ตัวอย่าง: การเลิกการติดต่อกับ File System (unmount) โดยระบุชื่ออุปกรณ์ (device)
$ umount /dev/hdc1

ตัวอย่าง: การเลิกการติดต่อกับ File System (unmount) โดยระบุชื่อไดเร็คทอรี่
$ umount /mnt/DOS_hdc1

27. คำสั่ง tar
เป็นคำสั่งสำหรับการสำรองข้อมูล โดยการรวบรวมไฟล์ข้อมูลหลาย ๆ ไฟล์ และหลาย ๆ ไดเรกทรอรี่ เข้ามาเป็นไฟล์เดียว
รูปแบบ: tar option filenames

option คือ ทางเลือกอื่นๆ ในการแสดงชื่อไฟล์ ที่สำคัญมีดังนี้
c สำหรับสร้างไฟล์สำรอง (Backup)
x สำหรับขยายไฟล์สำรอง (Restore)
v สำหรับแสดงรายละเอียดการทำงานออกหน้าจอภาพ
f filename กำหนดชื่อไฟล์สำรองที่จะสร้าง
t สำหรับดูเนื้อหาของไฟล์ที่บรรจุอยู่ในไฟล์สำรอง
r สำหรับเพิ่มไฟล์ใหม่เข้าไปในไฟล์สำรองเดิม

ตัวอย่าง: tar cvf back.tar *
ทำการสร้างไฟล์สำรองชื่อ back.tar จากทุกไฟล์ที่อยู่ในไดเรกทรอรี่ปัจจุบัน
tar xvf back.tar
ทำการขยายไฟล์สำรองชื่อ back.tar กลับสู่สภาพเดิม
tar tvf back.tar
แสดงชื่อไฟล์ที่ถูกสำรองไว้ ทางจอภาพ

28. คำสั่ง at
เป็นคำสั่งตั้งเวลาให้ระบบทำตามคำสั่ง เมื่อทำเสร็จจะส่งเป็น e-mail กลับมาให้
รูปแบบ: at [-f filename] Time

Time เวลาที่ต้องการให้คำสั่งนำไปปฏิบัติ มีหลายรูปแบบดังนี้
HH:MM กำหนดชั่วโมงและนาทีของวันปัจจุบัน
Midnight, noon ,teatime (4 โมงเย็น)
AM / PM
MMDDYY หรือ MM/DD/YY หรือ MM.DD.YY
Now + number อีกจำนวนเวลา number จากปัจจุบันจึงเริ่มทำงาน
- f filename กำหนดให้ทำตามคำสั่งที่เก็บอยู่ใน filename
ตัวอย่าง: at 12:30 ให้ทำคำสั่ง ที่จะป้อนต่อไป เมื่อถึงเวลา 12:30 น.
หลังจากนั้นจะได้ prompt ของคำสั่ง at> พิมพ์คำสั่ง และจบด้วยกด ctrl+d
at> ls –la กด Ctrl + d
ตัวอย่าง: at now + 2 minutes ให้ทำคำสั่ง ที่จะป้อนต่อไป ในอีก 2 นาทีข้างหน้า
หลังจากนั้นจะได้ prompt ของคำสั่ง at> พิมพ์คำสั่ง และจบด้วยกด ctrl+d
at> ls –la กด Ctrl + d


หมายเหตุ
ตรวจสอบงานที่ตั้งเวลาไว้ด้วย atq
ยกเลิกงานที่ตั้งเวลาไว้ด้วย atrm ตามด้วยเลขคิวงาน

29. คำสั่ง crontab
เป็นคำสั่งจัดทำตารางทำงานอัตโนมัติ ที่ต้องทำบ่อย ๆ เป็นประจำ ทุกวัน ทุก เดือน เป็นต้น เมื่อทำเสร็จจะส่งเป็น e-mail กลับมาให้ รูปแบบของไฟล์ตารางเวลาทำงาน มีดังนี้
minute hour day month dayofweek command
0-59 0-23 1-31 1-12 0-6
ตัวอย่าง: 0 8 * * * ls -l หมายถึง
ให้ทำคำสั่ง ls -l ในเวลา 8:00 น. ของทุก ๆ วัน และทุก ๆ เดือน
ตัวอย่าง: 30 2 * jan sat,sun rm –f /tmp/* หมายถึง
ให้ทำคำสั่ง rm –f /tmp/* ในเวลา 2:30 น. ของทุกวันเสาร์และอาทิตย์ของเดือน มกราคม
การตั้งเวลา ใช้ crontab -e จะสร้างไฟล์ตารางทำงานอัตโนมัติ ด้วย editor vi หรือ
ใช้ crontab myfile myfile คือ ไฟล์ที่สร้างขึ้นก่อนหน้า
ใช้ crontab -l แสดงไฟล์ตารางทำงานอัตโนมัติ
ใช้ crontab -r ยกเลิกไฟล์ตารางทำงานอัตโนมัติ

30. คำสั่ง telnet
คำสั่ง telnet สำหรับการ Remote login
รูปแบบ: telnet [port]
ตัวอย่าง: การ telnet เข้าสู่เครื่อง health.moph.go.th port 23 จะได้ prompt login เข้าสู่ระบบ Unix
$ telnet health.moph.go.th 23


31. คำสั่ง ping
คำสั่ง ping สำหรับการตรวจเช็คสถานะการสื่อสารไปยัง host ปลายทาง ว่ายังทำงานอยู่หรือไม่
รูปแบบ: ping [port]
ตัวอย่าง: การ ping เข้าสู่เครื่อง health.moph.go.th
$ ping health.moph.go.th
$ ping 203.157.0.152

32. คำสั่ง traceroute
คำสั่ง traceroute สำหรับการตรวจเช็คเส้นทางจากเครื่องต้นทางไปยังเครื่องจุดหมายปลายทาง หากเส้นทางช่วงไหนเสียหรือไม่ดี ก็จะทราบได้จากข้อมูลที่แสดง
รูปแบบ: traceroute
ตัวอย่าง: การ traceroute เข้าสู่เครื่อง health.moph.go.th
$ traceroute health.moph.go.th
$ traceroute 203.157.0.152

33. คำสั่ง ftp
คำสั่ง FTP เป็นคำสั่งสำหรับการโอนย้ายข้อมูลผ่านระบบเครือข่าย TCP/IP (upload หรือ download files)
รูปแบบ: ftp [port]
ตัวอย่าง: การติดต่อไปที่เครื่อง fubar.net แล้วเปลี่ยนไดเร็คทอรี่เป็น mystuff
เพื่อดาวน์โหลดไฟล์ homework11
$ ftp solitude
Connected to fubar.net.
220 fubar.net FTP server (Version wu-2.4(11) Mon Apr 18 17:26:33 MDT 1994) ready.
Name (solitude:carlson): jeremy
31 Password required for jeremy.
Password:
230 User jeremy logged in.
ftp> cd mystuff
250 CWD command successful.
ftp> get homework11
ftp> quit
ตัวอย่าง: การติดต่อไปที่เครื่อง fubar.net แล้วเปลี่ยนไดเร็คทอรี่เป็น mystuff
เพื่ออัพโหลดไฟล์ collected-letters
$ ftp solitude
Connected to fubar.net.
220 fubar.net FTP server (Version wu-2.4(11) Mon Apr 18 17:26:33 MDT 1994) ready.
Name (solitude:carlson): jeremy
331 Password required for jeremy.
Password:
230 User jeremy logged in.
ftp> cd mystuff
250 CWD command successful.
ftp> put collected-letters
ftp> quit

หมายเหตุ: โปรแกรม ftp จะรับ/ส่งไฟล์รูปแบบ ascii แต่สามารถระบุคำสั่ง binary หรือ ascii ในการเปลี่ยนโหมดการรับส่งข้อมูล ก่อนการสั่งคำสั่ง get หรือ put


34. คำสั่ง ifconfig
คำสั่ง ifconfig เป็น network interface configuration tool
ตัวอย่าง: การตรวจสอบ status ของ sl1 interface:
1. พิมพ์คำสั่ง netstat -i และดู output แล้วเลือก sl# interface ตัวอย่าง sl0, sl1, sl2 เป็นต้น
2. พิมพ์คำสั่ง ifconfig sl# และ ตรวจสอบ ifconfig output มี key fields ดังนี้ :


Point To Point Flag
flag นี้ อยู่บน operational SLIP link
ถ้าไม่อยู่, link จะอยู่สถานะ down หรือ disconnect
ใช้ ifconfig sl# up และ ifconfig sl# เพื่อดูการเปลี่ยนแปลง
UP Flag
ชี้ว่า network sl# interface activate อยู่ และควรจะเป็น operational
Running Flag
ชี้ว่าคำสั่ง slattach สำเร็จ
ขณะนี้ link ถูก access อยู่ dial ได้สมบูรณ์ และสิ่งอื่น ๆ ได้รับการตอบกลับ และ remote end ถูก return สถานะ CARRIER DETECT
เมื่อสถานะ CD เกิด flags จะถูก update ด้วย running bit



35. คำสั่ง netstat
คำสั่ง netstat ทำงานร่วมกับคำสั่ง ifconfig เพื่อแสดงสถานะของ TCP/IP network interface
รูปแบบ : netstat -in
-i flag เพื่อดูข้อมูลบน network interfaces
-n flag พิมพ์ the IP addresses แทน host name
ใช้คำสั่ง verify SLIP interfaces, addresses, and hostnames ต่อไปจะกล่าวถึง netstat -in output
ตัวอย่าง แสดงว่า program และ save basic settings ของ a Hayes-compatible modem เป็นดังนี้ :
Name Mtu Network Address lpkts Ierrs Opkts Oerrs Col
lo0 1536 2462 0 2462 0 0
lo0 1536 127 localhost.austi 2462 0 2462 0 0
tr0 1492 1914560 0 21000 0 0
tr0 1492 129.35.16 glad.austin.ibm 1914560 0 21000 0 0
sl0 552 1.1.1.0 1.1.1.1 48035 0 54963 0 0
sl1* 552 140.252.1 140.252.1.5 48035 0 54963 0 0
netstat -in Command Output
สังเกต เครื่องหมาย * ถัดจาก sl1 interface จะแสดงว่า network interface จะลง (down)หรือไม่สามารถใช้ได้ user สามารถแก้ไขโดยใช้ คำสั่ง ifconfig sl1 up ถ้าเป็น SLIP interface ที่ถูกต้อง
netstat มี statistics เกี่ยวข้องกับ input และ output packet counts เหมือนกับ input และ output errors ที่ มีประโยชน์เมื่อเกิดปัญหา SLIP connections
ตัวอย่าง
user ใช้ ping เพื่อ remote host ไปที่ SLIP link และ คำสั่ง ping ปรากฏ hang
จึงใช้ คำสั่ง netstat -in จาก command shell อื่น and สังเกตุว่า Opkts เพิ่มขึ้น แต่ไม่มี Ipkts จาก remote host
เป็นการชี้ให้เห็นว่า remote system ไม่มีการ return (หรือไม่ receive) information
ต้อง run คำสั่ง netstat เดียวกัน บน remote system เพื่อตรวจสอบ receipt ของ ping packets หรือ error count
translation ของ hostnames กับ Internet numbers เกี่ยวข้องกับ name resolution และรวม critical ที่เกี่ยวข้องกับ operation ของ SLIP line
สำหรับการ debug hostname, aliases, และ routing ปัญหา, ใช้คำสั่ง netstat -rn
basename ของ host หรือ hostname เป็นชื่อที่ควร return จาก /etc/hosts file ถ้า machine ถูกบริการโดย nameserver (เช่น /etc/resolv.conf), แล้ว name-server จะ return qualified-domain name เต็มในคำสั่งนี้

36. คำสั่ง rpm
Red Hat Package Manager (RPM) คือ โปรแกรมสำหรับจัดการ Package ของ Red Hat ใช้สำหรับติดตั้ง ลบ เรียกดู และตรวจสอบ Package ต่างๆ ของ Red Hat
รูปแบบ: rpm [option]
ตัวอย่าง: การติดตั้ง Package ใหม่
$ rpm -i xsnow-1.40-5.i386.rpm
-i คือทางเลือกที่ใช้ในการติดตั้ง Package
-v คือทางเลือกที่ใช้ในการแสดงผลการทำงานของคำสั่ง rpm

ตัวอย่าง: การเรียกดูว่ามี Package ใดติดตั้งไว้แล้วบ้าง โดยแสดงผลทีละ 1 หน้า
$ rpm -qa | more
ตัวอย่าง: การเรียกดูว่ามี Package ชื่อ faq ติดตั้งไว้แล้วหรือยัง
$ rpm -qi faq
ตัวอย่าง: การแสดงรายชื่อไฟล์ที่อยู่ใน Package ชื่อ faq
$ rpm -ql faq
ตัวอย่าง: การลบ (erase) Package ชื่อ faq
$ rpm -e faq
ตัวอย่าง: การตรวจสอบว่าไฟล์ /usr/bin/uptime มาจาก Package ใด
$ rpm -qf /usr/bin/uptime

********************* The End **********************

Thursday, February 1, 2007

การ ติดตั้ง dialupadmin

การ ติดตั้ง dialupadmin

1. copy file dialup_admin จาก file freeradius
ไว้ที่ usr/local
และ copy file dialup_admin ไปไว้ที่ var/www/html

2. แก้ไข้ file
2.1 แก้ไข file admin.conf
cd /usr/local/dialup_admin/conf
gedit admin.conf

general_test_account_login: jmenai
general_test_account_password: jmenai
general_radius_server: 10.114.0.2
general_radius_server_port: 1812

sql_type: mysql
sql_server: localhost
sql_port: 3306
sql_username: root
sql_password: mysqlradius
sql_database: radius
sql_accounting_table: radacct
sql_badusers_table: badusers
sql_check_table: radcheck
sql_reply_table: radreply
sql_user_info_table: userinfo
sql_groupcheck_table: radgroupcheck
sql_groupreply_table: radgroupreply
sql_usergroup_table: usergroup
sql_total_accounting_table: totacct
sql_nas_table: nas

2.2 แก้ไข file naslist.conf
gedit naslist.conf

nas1_name: nas1.%{general_domain}
nas1_model: Cisco 2511 access server
nas1_ip: 10.114.0.46
nas1_port_num: 16
nas1_community: public
nas2_name: nas2.%{general_domain}
nas2_model: Cisco 2511 access server
nas2_ip: 10.114.0.169
nas2_port_num: 16
nas2_community: public

3. แก้ไข apacha
cd /etc/httpd/conf
gedit httpd.conf

เพิ่ม
AddType application/x-httpd-php .php3


Options ExecCGI
AllowOverride AuthConfig
Order deny,allow
Allow from all


อย่าลืม restart service httpd นะครับ

************** The End ***********************

Sunday, January 28, 2007

การ Set Password ให้กับ MySQL

******** Set Password for MySQL ******************

1. Login เป็น Root

mysql -uroot -p กด Enter
- .................. ใส่ Password

2. พิมพ์คำสั่ง

set password = password('yourpassword'); กด Enter
exit;

3. Login เข้าสู่ระบบใหม่



*************** The End **************************

Boot File Grup On Linux

1. ใส่แผ่น Linux แผ่นแรกเข้าไป
รอให้ขึ้นหน้า boot linux
อย่ากด Enter
2. พิมพ์ คำสั่ง
linux rescue กด Enter
จะเข้าสู่ Chell Mode
จะมีขั้นตอนต่างให้เลือก มากมาย
เราไม่ต้องสนใจ ตอบตกลงอย่างเดี่ยว

จะกระทั้งถึงหน้า Screen ที่เป็นสีแดง
3. พิมพคำว่า
chroot /mnt/sysimage ถ้าหาไม่เจอแสดงว่าเราต้องลง Linux ใหม่นะ แต่ปกติมันจะมีอยู่แล้ว
grup-install /dev/hda ** บ้างเครื่องก็จะเป็น hdc ..... แล้วแต่ padition ที่เราแบ่งนะครับ บม....

exit
exit

************** The End *****************

Step Config radius server


การติดตั้ง RADIUS Server For LinuxTLE7.0 + phpMyprepaid0.3.2RC
Software ที่ต้องการ

Mysql-server
Mysql-Client
Apache
phpMyAdmin2.6.0
phpMyprepaid0.3.2RC
freeradius-1.1.2
Openssl




***************************************
ขั้นตอนการติดตั้ง MySQL


(1) ใช้คำสั่งapt-get install mysqlapt-get install mysql-server
(2) สั่งให้ทำงานทุกครั้งที่บูทเครื่องchkconfig mysqld on
(3) สั่งให้ทำงานด้วยคำสั่งว่า
/etc/init.d/mysqld start
Initializing MySQL database: [ OK ]
Starting MySQL: [ OK ]

(4) ตรวจสถานะของ MySQL
/etc/init.d/mysqld status
mysqld (pid 4054) is running...

(5) ติดตั้ง Username and Password ของ MySQL

mysqladmin -uroot password mysqldroot

quit;
เสร็จสิ้นการติดตั้ง MySQL




*************************************


ขั้นตอนการติดตั้ง www server ด้วยโปรแกรม httpd (apache 2.0)



(1) ใช้คำสั่งapt-get install httpdapt-get install httpd-manual

(2) ติดตั้ง mod_ssl เพิ่มเติมด้วยคำสั่งapt-get install mod_ssl

(3) สั่งให้ทำงานทุกครั้งที่บูทเครื่องchkconfig httpd on

(4) สั่งให้ทำงานด้วยคำสั่งว่า/etc/init.d/httpd startStarting httpd: [ OK ]

(5) แก้ไขแฟ้ม/etc/httpd/conf/httpd.conf ให้มีบรรทัดข้อความดังนี้

(6) เอา Comment หน้าคำว่า DefaultLanguage nl ออก

(7) ให้เพิ่มบรรทัดใหม่ข้อความว่า DefaultLanguage th

(8) ให้เพิ่มบรรทัดใหม่ข้อความว่า AddLanguage th .th

(9) ให้เพิ่มข้อความอักษร th แทรกเข้าไป กลายเป็น LanguagePriority th en ca ca da de .

(10) เดิมมีบรรทัดว่า AddDefaultCharset UTF-8ให้แก้ไขข้อความอักษรจาก UTF- 8เป็นTIS-620

(11) ให้เพิ่มบรรทัดใหม่ข้อความว่า AddCharset TIS-620 .tis- 620 .th

(12) แก้ไขใหม่เป็น Options FollowSymLinks

(13) เอา Comment หน้าคำว่าแล้วเปิด Function ที่ครอบข้อมูลนี้ออกเพื่อใช้งาน

DocumentRoot /var/www/html //Localhost
ServerName origin.hostname.domain // Domain Name

(14) เอา Comment หน้าคำว่า

AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny
Allow from all
Order deny,allow
Deny from all




***************************************

ขั้นตอนการติดตั้ง PhpMyAdmin

download phpMyAdmin-2.6.0.tar.gz เก็บไว้ที่
cd /var/www/htmlแตก filetar -xzvf phpMyAdmin-2.6.0.tar.gzcd phpMyadmin
แก้ไข file config.inc.php
โดยใช้คำสั่ง gedit config.inc.php

(1) ใส่ Host URL

$cfg['PmaAbsoluteUri'] = 'https://localhost/phpMyAdmin';

(2) ใส่ Host ของ Server

$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '80';

(3) ใส่ ชนิดของการ Authen

$cfg['Servers'][$i]['auth_type'] = 'config';

(4) ใส่ UserName PassWord ของ MySQL

$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'mysqlradius';

(5) ทำการ Configure ทั้ง 3 ส่วน




*****************************************


ขั้นตอนการติดตั้ง PhPMyPrepaid

Download hpMyAdmin0.3.2RC.tar.gz เก็บไว้ที่
cd /var/www/htmlแตก filetar –xzvf hpMyAdmin0.3.2RC.tar.gz
cd phpMyadmin

(1) แก้ไข File dbconnect.php

เมื่อทำการติดตั้งเสร็จก็ทำการ Brows Website ไปที่
https://localhost/phpmyprepaid เสร็จก็เราก็จะได้ Table ใน Database ครบทุก Filed โดย Brows ไปที่ https://localhost/phpMyAdmin เราก็จะเห็น Table ใน Database ดังนี้



รูปที่ 77 แสดง Table ที่สร้าง https://localhost/phpMyAdmin



(2) แก้ไข File Disconnect
รูปที่ 78 แสดง Configure File Disconnect.php

(3) แก้ไข File Userdisconnect
รูปที่ 79 แสดง Configure File Userdisconnect.php

Brows Website ไปที่
https://localhost/phpmyprepaid แล้ว Create UserName Password ของ Admin หลังจากนั้นก็ทำการ Login เข้าสู่ระบบ รูปที่ 80 แสดง Login เข้าสู่ระบบ
File dbconnect.php
$my_host="localhost";
$my_user="root"; เป็น user name ที่เข้าไปจัดการ da
$my_pass="mysqlradius"; เป็น password
ที่เข้าไปจัดการ da
$my_dbase="radius";
$connect=mysql_connect($my_host, $my_user, $my_pass);
$db=mysql_select_db($my_dbase);
if ($db=!1 or $connect==NULL) $buttonID="badconfigmysql";
?>
File body.php จาก code

//////////////////////////////////////////////////////////
// Include whatever button was pressed. //
// not the best way of doing this but it works //
//////////////////////////////////////////////////////////
if((!isset($button)) && isset($_SESSION['button'])){
$buttonID = $_SESSION['button'];
}
ให้แก้เป็น

//////////////////////////////////////////////////////////
// Include whatever button was pressed. //
// not the best way of doing this but it works //
//////////////////////////////////////////////////////////
if ( isset($_POST['buttonID'])) {
$buttonID = $_POST['buttonID'];
} elseif((!isset($button)) && isset($_SESSION['button'])){
$buttonID = $_SESSION['button'];
}




******************************************

ขั้นตอนการติดตั้ง Freeradius-1.1.2

Download Freeradius-1.1.2.tar.gz เก็บไว้ที่
cd /usr/local/src แตก filetar –xzvf Freeradius-1.1.2.tar.gz
cd freeradius1.1.2./configuremake
เป็นขั้นตอนในการ Compile โปรแกรม freeradius makeinstall
เป็นขั้นตอนในการ Install โปรแกรม freeradius
สั่ง Run Debug Mode



[root@RADIUS bin]# radiusd -Xxx -A
Sun Dec 3 16:56:07 2006 : Info: Starting - reading configuration files ...
Sun Dec 3 16:56:07 2006 : Debug: reread_config: reading radiusd.conf
Sun Dec 3 16:56:07 2006 : Debug: Config: including file: /usr/local/etc/raddb/proxy.conf
Sun Dec 3 16:56:07 2006 : Debug: Config: including file: /usr/local/etc/raddb/clients.conf
Sun Dec 3 16:56:07 2006 : Debug: Config: including file: /usr/local/etc/raddb/snmp.conf
Sun Dec 3 16:56:07 2006 : Debug: Config: including file: /usr/local/etc/raddb/eap.conf
Sun Dec 3 16:56:07 2006 : Debug: Config: including file: /usr/local/etc/raddb/sql.conf
Sun Dec 3 16:56:07 2006 : Debug: main: prefix = "/usr/local"
Sun Dec 3 16:56:07 2006 : Debug: main: localstatedir = "/usr/local/var"
Sun Dec 3 16:56:07 2006 : Debug: main: logdir = "/usr/local/var/log/radius"
Sun Dec 3 16:56:07 2006 : Debug: main: libdir = "/usr/local/lib"
Sun Dec 3 16:56:07 2006 : Debug: main: radacctdir = "/usr/local/var/log/radius/radacct"
Sun Dec 3 16:56:07 2006 : Debug: main: hostname_lookups = yes
Sun Dec 3 16:56:07 2006 : Debug: main: max_request_time = 30
Sun Dec 3 16:56:07 2006 : Debug: main: cleanup_delay = 5
Sun Dec 3 16:56:07 2006 : Debug: main: max_requests = 1024
Sun Dec 3 16:56:07 2006 : Debug: main: delete_blocked_requests = 0
Sun Dec 3 16:56:07 2006 : Debug: main: port = 1812
Sun Dec 3 16:56:07 2006 : Debug: main: allow_core_dumps = yes
Sun Dec 3 16:56:07 2006 : Debug: main: log_stripped_names = yes
Sun Dec 3 16:56:07 2006 : Debug: main: log_file = "/usr/local/var/log/radius/radius.log"
Sun Dec 3 16:56:07 2006 : Debug: main: log_auth = yes
Sun Dec 3 16:56:07 2006 : Debug: main: log_auth_badpass = yes
Sun Dec 3 16:56:07 2006 : Debug: main: log_auth_goodpass = yes
Sun Dec 3 16:56:07 2006 : Debug: main: pidfile = "/usr/local/var/run/radiusd/radiusd.pid"
Sun Dec 3 16:56:07 2006 : Debug: main: user = "(null)"
Sun Dec 3 16:56:07 2006 : Debug: main: group = "(null)"
Sun Dec 3 16:56:07 2006 : Debug: main: usercollide = no
Sun Dec 3 16:56:07 2006 : Debug: main: lower_user = "admin"
Sun Dec 3 16:56:07 2006 : Debug: main: lower_pass = "admin"
Sun Dec 3 16:56:07 2006 : Debug: main: nospace_user = "no"
Sun Dec 3 16:56:07 2006 : Debug: main: nospace_pass = "no"
Sun Dec 3 16:56:07 2006 : Debug: main: checkrad = "/usr/local/sbin/checkrad"
Sun Dec 3 16:56:07 2006 : Debug: main: proxy_requests = yes
Sun Dec 3 16:56:07 2006 : Debug: proxy: retry_delay = 5
Sun Dec 3 16:56:07 2006 : Debug: proxy: retry_count = 3
Sun Dec 3 16:56:07 2006 : Debug: proxy: synchronous = yes
Sun Dec 3 16:56:07 2006 : Debug: proxy: default_fallback = yes
Sun Dec 3 16:56:07 2006 : Debug: proxy: dead_time = 120
Sun Dec 3 16:56:07 2006 : Debug: proxy: post_proxy_authorize = yes
Sun Dec 3 16:56:07 2006 : Debug: proxy: wake_all_if_all_dead = no
Sun Dec 3 16:56:07 2006 : Debug: security: max_attributes = 200
Sun Dec 3 16:56:07 2006 : Debug: security: reject_delay = 1
Sun Dec 3 16:56:07 2006 : Debug: security: status_server = yes
Sun Dec 3 16:56:07 2006 : Debug: main: debug_level = 0
Sun Dec 3 16:56:07 2006 : Debug: read_config_files: reading dictionary
Sun Dec 3 16:56:07 2006 : Debug: read_config_files: reading naslist
Sun Dec 3 16:56:07 2006 : Info: Using deprecated naslist file. Support for this will go away soon.Sun Dec 3 16:56:07 2006 : Debug: read_config_files: reading clients
Sun Dec 3 16:56:07 2006 : Info: Using deprecated clients file. Support for this will go away soon.Sun Dec 3 16:56:07 2006 : Debug: read_config_files: reading realms
Sun Dec 3 16:56:07 2006 : Error: There appears to be another RADIUS server running on the authentication port 1812

เสร็จสิ้นขั้นตอนการติดตั้ง Freeradius-1.1.2



********************************************

โครงสร้างของ File Freeradius ที่ทำการ ติดตั้งมีลักษณะตั้งนี้

(1) /usr/local/etc/raddb ใช้ในการ Configure File
(2) /usr/local/bin ใช้ในการทดสอบ Radius Client radtest
(3) /usr/local/sbin ใช้ในการ Run Debug Mode radiusd
(4) /etc/services ใช้ในการเปิด port 1812,1813
(5) /var/radius/log ใช้ในการดู Log file
(6) /usr/local/lib เป็น Library ของ Freeradius
(7) /usr/local/share/freeradius
(8) /usr/local/share/doc/freeradius-1.1.2 เป็น Document


*******************************************
ขั้นตอนการ Configure File

Cd /usr/local/etc/raddb
File ที่จะต้องทำการ Configure
(1) radiusd.conf
(2) clients.conf
(3) eap.conf
(4) sql.conf
(5) naslist
(6) client
(7) dictionary





**************************************************************

ขั้นตอนการ Config file radiusd.conf

config radiusd.conf

(1) เพิ่ม Modules sqlcounter noresetcounter เพื่อใจดการเกี่ยวกับเวลา

sqlcounter noresetcounter {
counter-name = Max-All-Session-Time
check-name = Max-All-Session
sqlmod-inst = sql
key = User-Name
reset = never
query = "SELECT SUM(AcctSessionTime) FROM radacct WHERE UserName='%{%k}'"
}

(2) แทรก Modules noresetcounter ที่ instantiate เพื่อทำการเรียกใช้ Modules sqlcounter ให้ทำงาน

instantiate {

noresetcounter

}

(3) แทรก Modules noresetcounter ที่ authorize เพื่อทำการเรียกใช้ Modules sqlcounter ให้ทำงาน ในส่วนของการตรวจสอบเวลา และ ยกเลิกการ Comment #sql ออก เพื่อเรียกใช้ข้อมูลจาก database ในการตรวจสอบ UserName password

authorize {.
...
sql
noresetcounter
...
}


(4) ยกเลิกการ Comment #sql ออก เพื่อเรียกใช้ข้อมูลจาก database ในการตรวจสอบ UserName password

accounting {

sql

}

(5) ยกเลิกการ Comment #sql ออก เพื่อเรียกใช้ข้อมูลจาก database ในการตรวจสอบ UserName password ในการทำ session
session {

sql

}
*********************************************************************************

ขั้นตอนการ Config file client.conf ใช้สำหรับรับ IP จาก Client ที่จะทำการ Connect เข้ามายัง Radius Server


client 10.114.0.0/24 {
secret = testing เป็น secret ที่ Client จะต้องใช้ในการ Connect เปรียบเหมือน Password
shortname= private-network
nastype = other
}






*************************************************************************


ขั้นตอนการ Config file eap.conf ใช้ในการเข้ารหัส ของ Radius Server ได้แก่ การเข้ารหัสแบบ


(1) EAP (Extensible Authentication Protocol )
(2) PEAP (Protected Extensible Authentication protocol)
(3) MSCHAP (Microsoft Challenge Handshake Protocol)
(4) GTC (Generic Token Card)
(5) MD5 (Message Digest #5)
(6) LEAP (Lightweight Extensible Authentication Protocol )
(7) TLS (Transport Layer Security)
(8) TTLS (Tunneled Transport Layer Security )

eap{
default_eap_type = peap
timer_expire = 60
ignore_unknown_eap_types = no
cisco_accounting_username_bug = no
tls {
private_key_password = whatever
private_key_file = ${raddbdir}/certs/cert-srv.pem
certificate_file = ${raddbdir}/certs/cert-srv.pem
CA_file = ${raddbdir}/certs/demoCA/cacert.pem
dh_file = ${raddbdir}/certs/dh
random_file = ${raddbdir}/certs/random
fragment_size = 1024
include_length = yes
check_crl = yes
check_cert_issuer = "/C=GB/ST=Berkshire/L=Newbury/O=My Company Ltd"
check_cert_cn = %{User-Name}
cipher_list = "DEFAULT"
}

Peap {
default_eap_type = mschapv2

}
}

********************************************


ขั้นตอนการ Config file sql.conf ใช้ในการติดต่อกับฐานข้อมูลที่สร้างขึ้น


server = "localhost"
login = "root"
password = "mysqlradius"

****************************************

ขั้นตอนการ Config file naslist เป็นไฟล์ ที่บ่งบอกว่า Client นั้นเป็น อุปกรณ์ชนิดใด ถ้าเป็น portslave จะทำการตรวจสอบ User Account จากเครื่อง Server

ถ้าเป็น other จะทำการตรวจสอบจากเครื่อง PC เป็นเครื่องเอง
localhost local portslave
10.114.0.2 private-network other

***************************************


ข ั้นตอนการ Config file client เป็นไฟล์ที่กำหนดว่าจะอนุญาตให้อุปกรณ์ NAS ใดมีสิทธิ์ในการตรวจสอบสิทธิ์ User Account และ Password ได้บ้าง


localhost testing123
10.114.0.2 testing

************************************************

ขั้นตอนการ Config file Dictionary เป็นไฟล์ที่บ่บอกถึง Attribute ของ Client เพื่อบอกเวลาในการใช้งานของ Client


ATTRIBUTE Max-All-Session 3000 integer





***********************************************


ขั้นตอนการทดสอบระบบ run Debug Mode


radiusd -X
ใช้เพื่อทำการตรวจสอบการทำงานของ Radius Server ว่ามี Error หรือไม่

***************************************


Test radius

ใช้ในการตรวจสอบการ Connect ของ Client มายัง Radius Server


radtest cigpin6 test 10.114.0.2 1812 testing
rad_recv: Access-Request packet from host 10.114.0.46:3072, id=1, length=171
User-Name = "cigpin6"
NAS-IP-Address = 10.114.0.46
Called-Station-Id = "00904c910001"
Calling-Station-Id = "0012f0a41c6c"
NAS-Identifier = "00904c910001"
NAS-Port = 20
Framed-MTU = 1400
State = 0xa999bff286555c9e267e8a51df061523
NAS-Port-Type = Wireless-802.11
EAP-Message = 0x020800261900170301001bc9c82c0f5375762e255c1efebde18382d938a47fcaed093c610505 Message-Authenticator = 0x6e82f497e345957e69e799272fa6ecaa
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 45
modcall[authorize]: module "preprocess" returns ok for request 45
modcall[authorize]: module "chap" returns noop for request 45
modcall[authorize]: module "mschap" returns noop for request 45
rlm_realm: No '@' in User-Name = "cigpin6", looking up realm NULL
rlm_realm: No such realm "NULL"
modcall[authorize]: module "suffix" returns noop for request 45
rlm_eap: EAP packet type response id 8 length 38
rlm_eap: No EAP Start, assuming it's an on-going EAP conversation
modcall[authorize]: module "eap" returns updated for request 45
users: Matched entry DEFAULT at line 152
modcall[authorize]: module "files" returns ok for request 45
radius_xlat: 'cigpin6'
rlm_sql (sql): sql_set_user escaped user --> 'cigpin6'
radius_xlat: 'SELECT id, UserName, Attribute, Value, op FROM radcheck WHERE Username = 'cigpin6' ORDER BY id'
rlm_sql (sql): Reserving sql socket id: 3
rlm_sql_mysql: query: SELECT id, UserName, Attribute, Value, op FROM radcheck WHERE Username = 'cigpin6' ORDER BY id
radius_xlat: 'SELECT radgroupcheck.id,radgroupcheck.GroupName,radgroupcheck.Attribute,radgroupcheck.Value,radgroupcheck.op FROM radgroupcheck,usergroup WHERE usergroup.Username = 'cigpin6' AND usergroup.GroupName = radgroupcheck.GroupName ORDER BY radgroupcheck.id'
rlm_sql_mysql: query: SELECT radgroupcheck.id,radgroupcheck.GroupName,radgroupcheck.Attribute,radgroupcheck.Value,radgroupcheck.op FROM radgroupcheck,usergroup WHERE usergroup.Username = 'cigpin6' AND usergroup.GroupName = radgroupcheck.GroupName ORDER BY radgroupcheck.id
radius_xlat: 'SELECT id, UserName, Attribute, Value, op FROM radreply WHERE Username = 'cigpin6' ORDER BY id'
rlm_sql_mysql: query: SELECT id, UserName, Attribute, Value, op FROM radreply WHERE Username = 'cigpin6' ORDER BY id
radius_xlat: 'SELECT radgroupreply.id,radgroupreply.GroupName,radgroupreply.Attribute,radgroupreply.Value,radgroupreply.op FROM radgroupreply,usergroup WHERE usergroup.Username = 'cigpin6' AND usergroup.GroupName = radgroupreply.GroupName ORDER BY radgroupreply.id'
rlm_sql_mysql: query: SELECT radgroupreply.id,radgroupreply.GroupName,radgroupreply.Attribute,radgroupreply.Value,radgroupreply.op FROM radgroupreply,usergroup WHERE usergroup.Username = 'cigpin6' AND usergroup.GroupName = radgroupreply.GroupName ORDER BY radgroupreply.id
rlm_sql (sql): Released sql socket id: 3
modcall[authorize]: module "sql" returns ok for request 45
modcall: leaving group authorize (returns updated) for request 45
rad_check_password: Found Auth-Type EAP
auth: type "EAP"
Processing the authenticate section of radiusd.conf
modcall: entering group authenticate for request 45
rlm_eap: Request found, released from the list
rlm_eap: EAP/peap
rlm_eap: processing type peap
rlm_eap_peap: Authenticate
rlm_eap_tls: processing TLS
eaptls_verify returned 7
rlm_eap_tls: Done initial handshake
eaptls_process returned 7
rlm_eap_peap: EAPTLS_OK
rlm_eap_peap: Session established. Decoding tunneled attributes.
rlm_eap_peap: Received EAP-TLV response.
rlm_eap_peap: Tunneled data is valid.
rlm_eap_peap: Success
rlm_eap: Freeing handler
modcall[authenticate]: module "eap" returns ok for request 45
modcall: leaving group authenticate (returns ok) for request 45
Processing the session section of radiusd.conf
modcall: entering group session for request 45
radius_xlat: '/usr/local/var/log/radius/radutmp'
modcall[session]: module "radutmp" returns ok for request 45
modcall: leaving group session (returns ok) for request 45
Sending Access-Accept of id 1 to 10.114.0.46 port 3072
MS-MPPE-Recv-Key = 0x011bc97b1fa2811eb55cb77bf8e794c71068c53017bc01c045befba31321f375
MS-MPPE-Send-Key = 0x92d5375e63c2ecfa501c403af6d7f71b5c4ada43e9fb3fbfe15bf50fe0a1796a
EAP-Message = 0x03080004
Message-Authenticator = 0x00000000000000000000000000000000
User-Name = "cigpin6"
Finished request 45
Going to the next request
Waking up in 6 seconds...
--- Walking the entire request list ---
Cleaning up request 45 ID 1 with timestamp 45790f16
Nothing to do. Sleeping until we see a request.

***********************************


kill radius Server


กด Contrlo C เพื่อหยุดการทำงานของ Radius Server และใช้คำสั่ง
kill -9 `ps -A grep radiusd gawk '{ print $1 }'`
เพื่อ ทำลาย Service ของ Server หลังจากนั้นค่อย Run ขึ้นมาใหม่ โดยใช้คำสั่ง radius –X
เป็นการเริ่มการทำงานใหม่ คล้ายกันกับการ Restart ระบบ

******************** The End **********************