วิเคราะห์ Radius ด้วย Pascal
เว็บเพจสำรอง (Backup Webpages) : thaiabc.com | thaiall.korattown.com | perlphpasp.com | thaiall.com
ปรับปรุง : 2548-02-06 ()
วิเคราะห์ Radius ด้วย Pascal
Radius คือโปรแกรมที่ช่วยตรวจสอบสิทธิ์ของผู้ใช้ ที่โทรศัพท์เข้ามาขอใช้ Internet จาก ISP
ท่านสามารถจำลองสถานการ แล้ว download TP7 556Kb หรือ router.exe 8Kb ไปทดสอบดูได้ครับ
  1. Radius คืออะไร
  2. Crontab คือการตั้งเวลาให้โปรแกรมประมวลผล
  3. โปรแกรม startup : run ทุกชั่วโมง อัตโนมัติ
  4. โปรแกรม runacct : run วันละ 1 ครั้ง อัตโนมัติ
  5. ตัวอย่างผลลัพธ์จาก Radius ที่จะใช้ pascal สรุปผลออกมา
  6. โปรแกรม router.pas
  7. ทำรายงานใน excel

Radius คืออะไร
Radius คือโปรแกรมที่ช่วยตรวจสอบสิทธิ์ของผู้ใช้ ที่โทรศัพท์เข้ามาขอใช้ Internet จาก ISP ซึ่งจะเป็นโปรแกรมที่ run อยู่ตลอดเวลา มีลักษณะเป็น Radius server เหมือนพวก Web server หรือ Mail server ที่โปรแกรมต้องตื่นตลอดเวลา เพื่อรอให้บริการกับผู้ใช้
เมื่อใดก็ตามที่มีผู้ใช้ หมุ่นโทรศัพท์จากที่บ้านเข้ามา Modem ที่เราติดตั้งไว้ ตัว Modem จะวิ่งไปที่ rounter ซึ่งจะถูก config ให้ส่งข้อมูล เช่น User และ Password ไปให้กับ Radius server เพื่อตรวจสอบว่ามี account ใน server หรือไม่ ถ้ามีก็จะส่งคำอนุญาติให้ connect ได้ แล้วบันทึกข้อมูลว่าเริ่ม connect เมื่อใด
เราสามารถตรวจดูว่า โปรแกรม radius ทำงานอยู่หรือไม่ด้วยคำสั่ง ps -ef ก็จะเห็นคำสั่งดังข้างล่างนี้ ซึ่งเป็นผลจากการ run radius อยู่ใน server หรือการทำงานของ web server หรือ mail server ดังข้างล่างนี้
โดยการขอ Radius เพื่อจัดเก็บสถิติ ต้องทำงานคู่กับ crontab ซึ่งจะอธิบายในหัวข้อต่อไป
Crontab คือการตั้งเวลาให้โปรแกรมประมวลผล
Last updated [April 2001] :วิธีการในบทเรียนนี้จะแตกต่างกับที่ใช้ใน Redhat 6.2 ที่ใช้ที่ www.isinthai.com เพราะวิธีการนี้เขียนมาจาก Unix ในเครื่อง Sun ดังนั้นหากต้องเปรียบเทียบบางอย่าง ต้องดูทั้งที่นี่ และที่ www.isinthai.com เพราะที่นั่นใช้ Redhat 6.2 เป็น Case study
สิ่งสำคัญที่ควรทราบ crontab เป็นคำสั่งที่เหมาะกับผู้ควบคุมระบบเท่านั้น ถ้าท่านไม่ใช่ผู้ควบคุมแล้วไปใช้คำสั่งนี้โดยพลการ อาจถูกลบ account ได้ตลอดเวลา เพราะท่านอาจกำหนดคำสั่งใน crontab จนทำให้ระบบ รวนได้ นั่นคือปัญหา
Crontab มีประโยชน์มาก เพราะสามารถตั้งเวลาให้ประมวลผลโปรแกรมใดก็ได้ ซึ่งการนำไปใช้ ผู้ใช้ต้องประยุกต์ให้งานเอง เช่นการสั่งปิดเครื่องทุกวันตอน 3 ทุ่ม หรือสั่งให้ restart ตัวเอง ทุกวันที่ 1 ของเดือน หรือสั่งให้ clear log ทุกสัปดาห์ เป็นต้น นอกจากนี้ระบบยังยอมให้กำหนด crontab ของผู้ใช้แต่ละคนได้ แต่ต้องกำหนด username ไว้ดังตัวอย่างข้างล่างนี้ ว่าจะกำหนด crontab ให้กับ user คนใด
รูปแบบของ crontab มี 2 ส่วน คือ ตัวเลขกำหนดเวลา และคำสั่งที่กำหนด โดยเลข 5 ตัว ซึ่งกำหนดเวลาให้ประมวลผลคำสั่งที่ต่อท้าย เมื่อผมใช้คำสั่ง man crontab จะเห็นบรรทัดที่อธิบายเกี่ยวกับเรื่องเลข 5 ตัวไว้ดังนี้ (สำหรับ * หมายถึงไม่กำหนดเวลา เป็นช่องเปิดไว้) The first five are integer patterns that specify the following:
วิธีสร้าง crontab : ท่านเพียงแต่พิมพ์ว่า crontab แล้ว enter ก็สามารถพิมพ์คำสั่ง แล้วป้อนเลขบรรทัดที่ต้องการแก้ จะแสดงบรรทัดเก่า ให้ท่านพิมพ์บรรทัดใหม่ได้ เลยแล้วกดปุ่ม enter เมื่อจะ save ก็ใช้ ctrl-d แต่ถ้าจะยกเลิกให้ใช้ ctrl-c เป็นอันยกเลิก
วิธีลบ crontab : crontab -r username หรือ crontab -r ก็จะลบของ root
วิธีแสดงข้อมูล crontab : crontab -l username หรือ crontab -l
โปรแกรม startup : run ทุกชั่วโมง อัตโนมัติ
โปรแกรมนี้จะทำงานทุกชั่วโมง เพื่อสั่งให้โปรแกรม radiusd จัดทำรายงาน แล้วเก็บเข้าไปในแฟ้ม /tmp/report และบรรทัดต่อมาก็จะสั่งให้ส่งแฟ้มที่ต้องการไปให้กับผู้ดูแลระบบทาง email หลังจากนั้นก็ลงรายงานทิ้งไป เป็นการ backup รายงานวิธีหนึ่ง เพื่อจัดเก็บสถิติต่าง ๆ ไว้ (วิธีนี้ถือเป็นการ backup ข้อมูล อาจไม่ทำก็ได้) และ /usr/local/etc/radius/bin/radiusd เป็นโปรแกรมซึ่งมีขนาดถึง 35592 byte ไม่สามารถใช้คำสั่ง more ดู source โปรแกรมได้ ส่วน /usr/bin/mail ก็เป็นโปรแกรมของ server ที่ใช้สำหรับส่ง mail นั่นเอง เพียงแต่ท่านอาจไม่ชินกับการใช้คำสั่งนี้ส่ง mail แต่ความสามารถของคำสั่ง ก็สามารถใช้ได้ บางคนอาจไม่ต้องใช้ pine ก็สามารถอ่าน mail หรือส่ง mail ได้ด้วยซ้ำไป
โปรแกรม runacct : run วันละ 1 ครั้ง อัตโนมัติ
โปรแกรมนี้ทำหน้าที่เก็บสถิติของแต่ละวันเป็นแฟ้มใหม่ ซึ่งแฟ้มใหม่มีชื่อตามวันเช่น 310100 หรือ 311299 เป็นต้น ท่านสามารถไป copy ข้อมูลจากห้อง http://www.yonok.ac.th/yn/router/ มาทดสอบดูได้นะครับ ซึ่งจะมีข้อมูลทุกวันยกเว้นวันที่ server down หรือไฟฟ้าดับ
หลังจากโปรแกรมทำการเก็บข้อมูลไว้เรียบร้อยแล้ว จะทำการลบแฟ้มข้อมูล แล้วเริ่มต้นนับใหม่ตั้งแต่ต้นของวันใหม่ แฟ้มข้อมูลจึงถูกแยกออกเป็นแต่ละวัน ซึ่งท่านจะสังเกตุได้ว่าแฟ้มข้อมูลที่เราเก็บ ถูกเก็บในแฟ้ม /usr/local/etc/radius/radacct/door.yonok.ac.th/detail ซึ่งข้อมูลในแฟ้มนี้เพิ่มขึ้น เนื่องจากได้ระบบมีโปรแกรม radius แล้วให้บริการตรวจสอบ account ที่มาจาก modem ส่งต่อมายัง rounter แล้ว rounter ขอตรวจสอบ user password มายัง radius server แล้วเครื่องจะสั่งบันทึกการขอใช้ต่าง ๆ ในแฟ้มดังกล่าวนั่นเอง
ตัวอย่างผลลัพธ์จาก Radius ที่จะใช้ pascal สรุปผลออกมา
นี่คือตัวอย่างข้อมูลที่ได้รับ ท่านลองเอาโปรแกรม pascal ที่ผมเขียนมาวิเคราะห์ข้อมูล แล้วประมวลผลออกเป็นข้อมูลที่อ่านได้ง่ายดูนะครับ ผมใช้ pascal เพราะตอนนั้นศึกษา pascal และเข้าใจมากกว่าภาษาอื่น เมื่อเจอลักษณะข้อมูลแบบนี้ และคิดว่าถ้าใช้ pascal แล้วน่าจะวิเคราะห์ผลออกมาได้เร็วที่สุด .. ถ้าเป็นท่านจะใช้อะไรครับ และท่านใดอยากได้ปริมาณข้อมูลไปทดลองประมวลผล สามารถเปิดจาก http://www.yonok.ac.th/yn/router/ ยังมีแฟ้มอีกเพียบครับ รอให้ท่านมา copy ไปทดสอบแกะดู
ในการใช้งานจริง แฟ้มข้อมูลจะเป็นของวันเดียว ผมจะใช้คำสั่ง copy ธรรมดา เพื่อรวมแฟ้มทุกแฟ้มเข้าด้วยกัน แล้วจึงจะประมวลผลแฟ้มนั้นครั้งเดียว ก่อนได้ตารางการใช้ของผู้ใช้แต่ละคน
copy 011200 + 021200 + 031200 + 041200 + 051200 file1200 (ตัวอย่างนี้ แสดงการรวมแฟ้มตั้งแต่วันที่ 1 ถึง 5 ของเดือนพฤศจิกายน เข้าแฟ้ม file1200 จึงจะนำแฟ้มนี้ไปประมวลผลต่อไป)
โปรแกรม router.pas
โปรแกรมนี้ผมเขียนขึ้นเมื่อมกราคมปี 41 เพื่อใช้งาน .. ซึ่งถ้าเขียนใหม่ จะเขียนได้ดีกว่านี้มาก
ท่านใดเขียนใหม่แล้ว ลดขั้นตอนลงได้ ช่วยส่งมาด้วยนะครับ ผมจะลง source ให้ครับ
หากท่านต้องการทดสอบโปรแกรมนี้ โดยไม่ต้องการนำ .pas ไป compile ให้เป็น exe ท่านสามารถ download .exe ด้วยที่นี่ได้เลยครับ (Click for download router.exe 8Kb เท่านั้น) และถ้าต้องการ compiler ของ Pascal7 ซึ่งใช้กับ Pentium ได้ก็สามารถ Click for download TP7 556Kb
การใช้โปรแกรมนี้ เพียงแต่สั่งว่า c:\>router file1200 ท่านจะได้แฟ้มชื่อ file1200x.txt ซึ่งเป็นผลจากการประมวลผลออกมา อัตโนมัติ ซึ่งออกมาให้ทราบว่าผู้ใช้แต่ละคน ใช้เวลาเท่าไร connect เข้าสู่ระบบผ่านสายโทรศัพท์
ที่อยู่ข้างล่าง source ที่เป็นตัวหนังสือสีน้ำเงินก็คือผลลัพธ์จากโปรแกรม rounter ที่ท่านจะนำไปเปิดใน excel แล้วทำ pivot table เพื่อสรุปผลได้อย่างง่าย ๆ นั่นเอง
ทำรายงานใน excel
เมื่อได้แฟ้มอย่างเช่น file1200 มาแล้ว ซึ่งมีตัวอย่างดังข้อมูลสีน้ำเงินข้างบนนี้ จะเห็น column สุดท้ายคือหน่วยของเวลาที่ login เข้าระบบเป็นวินาที จำเป็นต้องแปลงให้เป็นชั่วโมงและนาที
หลังจากแปลงแล้ว ให้ใช้ pivot table ของ excel ซึ่งอยู่ใน menu bar : data(ข้อมูล) ทำการจับกลุ่มแยกตามวันที่ และรหัสผู้ใช้ จะได้ตารางรายงานที่ดูดี ใน excel ทันที
สูตรที่ใช้แปลงวินาทีเป็น ชั่วโมงและนาที ใน excel มีดังนี้
1. ผลเป็นชั่วโมง =ROUND((INT((A1/3600))+((A1/3600)-INT(A1/3600))*60/100),2) เช่น 1 ชั่วโมงมี 3600 วินาที ดังนั้น 4000 จึงเท่ากับ 1 ชั่วโมง เมื่อใช้สูตรนี้ทำงานกับค่า 4000 จะได้เลข 1
2. ผลเป็นนาที =MOD(A4,3600)/60 เช่น 3780 คือ 1 ชั่วโมง 3 นาที สูตรนี้จะวิเคราะห์ค่า 3780 ให้ได้เลข 3

แนะนำเว็บใหม่ : ผลการจัดอันดับ
รักลำปาง : thcity.com : korattown.com : topsiam.com : มหาวิทยาลัยโยนก
ศูนย์สอบ : รวมบทความ : ไอทีในชีวิตประจำวัน : ดาวน์โหลด : yourname@thaiall.com
ติดต่อ ทีมงาน ชาวลำปาง มีฝันเพื่อการศึกษา Tel.08-1992-7223