Thursday, December 27

THE DEBIAN ADMINISTRATOR'S HANDBOOK

THE DEBIAN ADMINISTRATOR'S HANDBOOK

    อย่างที่เราทราบกันดีอยู่แล้วว่า เจ้าระบบปฏิบัติการ Raspbian นั้น แท้จริงแล้วก็คือ Debian ที่ถูกตัดแต่งพันธุกรรมให้เหมาะกับฮาร์ดแวร์บนบอร์ด Raspberry Pi นั่นเอง เพราะฉะนั้นแล้ว ความเข้าใจในระบบปฏิบัติการ Debian ย่อมนำไปสู่การปรับแต่งค่า และการใช้งานเจ้า Raspian ด้วยเช่นกัน

     ผมจะยกตัวอย่างให้ฟัง เดิมทีผมมักจะใช้ CentOS เมื่อเวลาที่จะต้องกำหนดค่าต่างๆ ให้กับ Apache นั้นเราต้องไปกำหนดที่ค่า httpd.conf ซึ่งอยู่ใน path  /etc/httpd/conf/httpd.conf แต่สำหรับเจ้า Debian แล้ว มันไม่ได้เก็บค่าไว้ตรงนั้น มันดันไปเก็บค่าไว้ที่ /etc/apache2/sites-enabled/000-default และบางค่า ก็ไปเก็บไว้ที่ /etc/apache2/apache2.conf นั่นหมายความว่า ไม่ใช่ว่าทุกๆ OS จะต้องปฏิบัติตามเหมือนกันหมด แต่ก็ใช่ว่าจะแตกต่างกันสิ้นเชิงเลยเสียทีเดียว

     ในส่วนของการปรับแต่งค่าที่เกี่ยวข้องกับระบบ network นั้น จริงๆ แล้ว เรากำลังทำหน้าที่เป็น administrator อยู่นั่นเอง วันนี้ ผมมีหนังสือแนะนำให้ไปอ่านกันนะครับ สำหรับใครที่กำลังเล่นอยู่กับ Raspberry Pi ที่ใช้ Raspian เป็น OS และกำลังเจอปัญหาอย่างที่ผมได้เกริ่นไว้ข้างต้น แนะนำให้มาอ่านเล่มนี้ครับ จะได้ไม่เจอปัญหาเหมือนผม ;P

THE DEBIAN ADMINISTRATOR'S HANDBOOK มีไฟล์ให้เราเลือกไปอ่านได้ 3 ประเภทไฟล์ครับ ต้องการรูปแบบไหน ก็เข้าไปเลือกดาวน์โหลดกันได้เลยครับ ..... คลิก

อ่านเพิ่มเติม...

Monday, December 24

How to find Raspbberry Pi’s IP Address when yon don’t know it.

      โดยปกติแล้ว หลังจากที่เราได้บอร์ด Raspbbery Pi มาแล้ว เมื่อทำการติดตั้ง Raspian ลงบน SD-Card เรียบร้อยแล้ว ในเวอร์ชั่นหลังๆ ของ Raspian
เค้าจะเปิด SSH ไว้ให้เรียบร้อยแล้ว หน้าที่ของเราก็คือ หาช่อง PORT Network จาก Router ของเราเสียบเข้าไปที่ Port Network ที่บอร์ด Raspberry Pi เมื่อจ่ายไฟเข้าบอร์ดเรียบร้อยแล้ว หากไม่มีอะไรผิดพลาด เจ้าบอร์ด Raspberry Pi ก็อยู่ในวง LAN เดียวกันกับเครื่องคอมพิวเตอร์ ของเราแล้ว (ด้วยการจ่าย IP Address จาก Router) หน้าที่ของเราก็คือ ทำการ Login แล้วทำการติดตั้ง Package อืนๆ ที่ต้องการ

     ปัญหาจะเกิดขึ้นตอนนี้ ก็คือ อย่างที่เรารู้อยู่แล้วว่าช่อง Display Output ของ Raspberry Pi มีให้เลือก คือ AV out (default) และ ช่อง HDMI (ซึ่งต้องเข้าไปเซตค่าก่อนใช้งาน) แล้วถ้าเราไม่สามารถหา TV หรือ Monitor ที่มีช่อง AV IN มาต่อกับบอร์ด Raspberry Pi หล่ะ เราจะเริ่มต้นใช้งานบอร์ดได้อย่างไร ?

     ด้วยความรู้ เรื่อง Network และ Linux ที่มีอยู่นิดหน่อย เราน่าจะใช้โปรแกรม nmap ในการทำการ scan หา Port 22 ซึ่งเป็น  Port สำหรับ SSH ที่ Raspberry Pi ถูกเปิดใช้งาน และเมื่อ Raspberry Pi ถูกต่ออยู่ในวง LAN เดียวกันเครื่องคอมพิวเตอร์ของเราแล้ว ก็น่าจะไม่ใช่เรื่องยาก ที่จะหา IP Address ของ Raspberry Pi เพื่อที่เราจะได้ทำการ SSH เพื่อเข้าใช้งาน Raspbbery Pi ต่อไป

เอาหล่ะ เราก็โหลดโปรแกรม nmap มาใช้กันเลย ซึ่งสามารถเข้าไปโหลดเวอร์ชั่นสำหรับ windows ได้จากเว็บ http://nmap.org/download.html#windows แต่ วันนี้ ผมไม่ได้มาแนะนำสำหรับเวอร์ชั่น windows ครับ ผมจะแนะนำเวอร์ชั่นของ Debian ;P

ก่อนหน้านี้ ผมได้แนะนำให้เพื่อนลองติดตั้ง VirtualBox เพื่อจำลองพื้นที่บน Windows ให้สามารถติดตั้ง Debian ได้ ฉะนั้น เราก็มาลองกันเลย ว่าเราจะเอา Debian บน VirtualBox มาใช้งานได้อย่างไร

เปิด VirtualBox ขึ้นมาครับ แต่ก่อนที่เราจะเริ่ม Start Debian ให้เราทำการตั้งค่า Network ให้เป็น Bridged Adapter กันก่อน เพื่อให้เจ้า Debian ของเราต่อออกอินเตอร์เนต เพราะเราต้องไปโหลด package nmap มาก่อน  เมื่อตั้งค่าเรียบร้อยให้ทำการ Start Debian ขึ้นมาเลยครับ

Debian on VirtualBox

Login เข้าสู่ XWindows ตามปกติ เมื่อเรียบร้อยแล้ว ให้เปิด Terminal ขึ้นมาสักตัว จากเมนู  จากนั้นเปลี่ยนตัวเองเป็น root ซะ แล้วทำการโหลด nmap package ด้วยคำสั่ง  apt-get install nmap


เรียกใช้คำสั่ง nmap เพื่อให้ทำการแสดงหาเครื่องในเครือข่าย ที่เปิด port 22 พร้อมทั้งให้แสดง OS ที่ติดตั้งอยู่ด้วย โดยผมให้เริ่มทำการ scan ตั้งแต่ ip address 192.168.2.100 ถึง 192.168.2.255  (เพราะผมทราบอยู่ก่อนหน้าแล้วว่า router ผมเริ่มจ่าย IP อยู่ใน  range นี้) ด้วยคำสั่ง   nmap –sV –p 22 192.168.2.100-255
รอสักครู่ จะปรากฏข้อความรายงานผล 

nmap result

ในที่นี้ ผมได้รับรายงาน มา  2 IP Address ที่เปิด Port 22 อยู่ในขณะนี้ แต่เนื่องจากเจ้า Debian virtual ของผมเป็นหมายเลขไอพี 192.168.2.109 อยู่แล้ว แสดงว่า เป้าหมายบอร์ด Raspberry Pi ที่เรากำลังหาอยู่นั้น เป็นหมายเลขไอพี 192.168.2.105 อย่างแน่นอน เราลอง เปิด putty ขึ้นมา เพื่อทำการเชื่อมต่อกับ SSH ที่ ไอพี 192.168.2.105  ผลปรากฏว่า ใช่เลย เราสามารถ login เข้าสู่ SSH ด้วย user pi แสดงว่า เราทำถูกแหละ

     นั่นก็เป็นแนวทางการใช้ nmap และการนำ Debian virtual มาช่วยในการทำงานของเรากับงาน Linux Embedded พวกนี้  น่าจะได้แนวทางไปประยุกต์ต่อไปนะครับ  ขอเสริมนิดหนึ่ง สำหรับโปรแกรม nmap เป็นโปรแกรมที่มีประโยชน์มาก สำหรับใครสนใจสามารถศึกษาได้เพิ่มเติม ผมรับรองว่ามีประโยชน์มาก โดยเฉพาะ linux network admin ครับ จำเป็นต้องใช้ และใช้บ่อยมาก 

    สุดท้าย ผมขอนำฉากๆ หนึ่งในหนังเรื่อง The matrix ครับ ในฉากนี้ ทรินิตี้ กำลังใช้คำสั่ง nmap ในการหา port ที่เปิดอยู่ แล้ว ทำการ hack เข้าไป เพื่อสั่งปิดแหล่งจ่ายไฟฟ้าทั้งหมดของโลก matrix หนังเรื่องนี้ สาระเยอะจริงๆ ถ้าตามเก็บรายละเอียดทั้งหมด จะพบว่า เราได้อะไรมากกว่า ฉากบู๊ที่ตื่นเต้น อีก

trinity uses nmap, shouldn't you?

อ่านเพิ่มเติม...

Saturday, December 22

Raspberry Pi checking Router’s IP Address

     จากตอนที่แล้ว (คลิก) เราได้ทำความเข้าใจเรื่องการใช้งาน crond service ของ Linux กันไปแล้ว วันนี้ เราจะมาสร้างระบบคอยตรวจสอบ WAN IP Address ของ Router แล้วให้ส่งค่า IP Address ของ Router ที่ได้รับจาก ISP (ผู้ให้บริการอินเตอร์เนตที่เราใช้อยู่ ) หาก IP Address เกิดการเปลี่ยนแปลงเนื่องจากเหตุผลใดๆ ก็ตาม ให้ทำการส่งค่า IP Address ใหม่ ไปบอกเราทาง E-mail นะครับ

Raspberry Pi Checking Router's IP Address Project

     จริงๆ หลักการ ก็ไม่ได้ยากอะไร เราจะให้บอร์ด Raspberry Pi ทำการเรียกไฟล์สคริปต์ php จาก Web Server ตัวหนึ่งที่ผมได้นำไฟล์ ip.php ไปฝากไว้ ซึ่งภายในไฟล์นี้ มีเพียงคำสั่งแสดง Remote ip address ซึ่งก็คือ IP Address ของ Router นั่นเอง

<?php echo $_SERVER['REMOTE_ADDR']; ?>

เมื่อได้ค่า router IP Address มาแล้ว หาก IP Address ไม่ตรงกับที่เคยเก็บค่าไว้ ก็จะทำการส่ง E-mail ไปบอกเรา ว่า ตอนนี้ IP Address ได้มีการเปลี่ยนแปลงเกิดขึ้นแล้วนะ ซึ่งเราจะนำ IP Address ของ  Router ที่ได้ ไปสร้างโปรเจคอื่นต่อไป แต่ตอนนี้ เอาเพียงเท่านี้ก่อนนะครับ เดี๋ยวจะงง

การทำงานคร่าวๆ ก็คือ ในตอนแรก Raspberry Pi เรียกดูไฟล์ ip.php ตาม URL ที่กำหนด
Raspberry Pi---> Access Point + Router--->request http://monitoring.orgfree.com/ip.php

จากนั้น web server monitoring.orgfree.com ตอบกลับ Remote IP Address ซึ่งนั่นเป็น IP Address ของ Router ที่เราได้รับจาก ISP ขณะนั้น
Raspberry Pi<--- Access Point + Router<---response Remote IP Address

จากนั้น เราก็จะนำค่า IP Address ไปเปรียบเทียบกับค่าที่เก็บไว้ใน text file ว่าค่าตรงกันหรือไม่ หากไม่ตรงกัน ก็จะทำการส่ง E-mail ไปบอกเรา ซึ่งเราจะนำโค๊ดจากก่อนหน้านี้ มาทำการปรับปรุง จะได้ว่า

#-------------------------------------------------------------------------------
# Name:        router.py
# Purpose:     for checking router's ip address
#
# Author:     
http://raspberry-pi-th.blogspot.com
#
# Created:     22/12/2012
# Copyright:   (c) raspberry-pi-th.blogspot.com 2012
#-------------------------------------------------------------------------------
import smtplib
import urllib2
host = "
http://monitoring.orgfree.com"
script = "ip.php"
path = "/"
file_target = '/home/pi/ip.txt'

def sendmail(ip_remote):
    SMTP_SERVER = 'smtp.gmail.com'
    SMTP_PORT = 587
    sender = 'raspberry router ip checker'
    recipient = '------------------'   # email ผู้รับ
    subject = 'Router IP Address notice'
    body  = 'Your router\'s ip address is changed to ' + ip_remote
    headers = ["From: " + sender,
                "Subject: " + subject,
                "To: " + recipient,
                "MIME-Version: 1.0",
                "Content-Type: text/html"]
    headers = "\r\n".join(headers)
    username = ‘---------------------’             # user name gmail
    password = '----------------------'           # password gmail
    server = smtplib.SMTP(SMTP_SERVER,SMTP_PORT)
    server.ehlo()
    server.starttls()
    server.ehlo()
    server.login(username,password)
    server.sendmail(sender,recipient,headers + "\r\n\r\n" + body)
    server.quit()

try:
    ip_remote =  urllib2.urlopen(host + path + script).read()
    print "ip remote " + ip_remote
    try:
        f = open(file_target,'r')
        read_ip = f.read()
        print "readout " + read_ip
        if (read_ip <> ip_remote):
            f.close()
            f = open(file_target,'w')
            f.write(ip_remote)
            sendmail(ip_remote)
            print "Email was sending"
        f.close()
    except Exception,e:
        print 'exception ' , e
        f = open(file_target,'w')
        f.write(ip_remote)
        f.close()
        sendmail(ip_remote)
        print "New file was created"
except urllib2.HTTPError, e:
    print host + path + script + " : " + str(e.code) + " " + str(e.msg)

#----------------- sript ending ----------------------------------

หมายเหตุ อย่าลืมใส่ username / password gmail account ของเราด้วยนะครับ

บันทึกไฟล์นี้ ชื่อ router.py ไว้ที่ /home/pi  อาจจะต้องทำการเปลี่ยนโหมด หากจำเป็น ด้วยคำสั่ง chmod 774 /home/pi/router.py จากนั้น นำสคริปต์ python ของเราไปฝากไว้ใน crontab (จากตอนที่แล้วของเรา) ให้ทำการเช็คทุกๆนาที หรือจะทุกๆ 10 นาที หรือ ทุกๆ ชั่วโมง ก็แล้วแต่ ความต้องการของเรา ในทีนี้ ผมให้มันเช็ค ทุกๆ นาทีหล่ะกัน จะได้เงื่อนไขใน crontab ดังนี้

* * * * * python /home/pi/router.py

ทำการบันทึก crond service แล้วรอดูผลที่ E-mail ของเรา ซึ่งในครั้งแรก ควรจะมีการส่งเมล์มาบอกเราทันที ที่สคริปต์ทำงาน เพราะว่า ไม่เคยมีไฟล์ ip.txt (ซึ่งได้จากรันสคริปต์ router.py) ปรากฏขึ้นเลยมาก่อน ก็เข้าเงื่อนไขการส่ง E-mail

Email alert from raspberry pi

เราลองลบไฟล์ ip.txt หรือไม่ก็ลองเข้าไปแก้ไข IP Address ภายในไฟล์ ip.txt แล้วลองสังเกตการเปลี่ยนแปลง ว่ายังมีการส่ง E-mail มาที่เราหรือเปล่า ซึ่งควรจะมีการส่งมา

จากนั้น เพื่อนๆ อาจจะทำการแก้ไขเงื่อนไขใน crontab เมื่อมั่นใจแล้วว่า สคริปต์ของเราทำงานได้อย่างที่ต้องการ โดยอาจจะเปลี่ยนเป็นเช็ค ทุกๆ ห้านาที ก็ได้ เพื่อไม่เป็นการ request ไปที่ web server มากเกินไป (อาจโดนเตะออก เหมือน spam ได้ )

ตั้งค่าใน crontab ใหม่ดังนี้
0,5,10,15,20,25,30,35,40,45,50,55 * * * * python /home/pi/router.py

crond service checking router's ip address

     ก็มีเพียงแค่นี้ สำหรับบทความตอนนี้ ต่อไปเราก็จะทำการ Forward Port ที่ Router ของเราให้ส่งตรงข้อมูลไปที่บอร์ด Raspbbery Pi ของเราอีกที ซึ่งนั่นจะทำให้เรา สามารถควบคุมระยะไกล จากที่ใดๆ ก็ได้มาที่บอร์ด Raspbbery Pi โดยผ่านหมายเลข router IP Address ของเรา ที่ซึ่งแม้ IP จะถูกเปลี่ยนแปลงไป เราก็ยังสามารถติดตามได้ว่า Router IP Address ของเราตอนนี้ ได้หมายเลขอะไร ซึ่งผมจะได้แสดงให้ดูในครั้งต่อไปครับ ^_^

อ่านเพิ่มเติม...

Friday, December 21

How to make crond service in linux

      ไม่ได้เข้ามาเขียนนานเหมือน ติดภาระกิจหลายอย่าง แต่ ก็ยังติดตามข่าวความก้าวหน้า และพัฒนาการของเจ้าบอร์ด Raspberry Pi อยู่เหมือนกัน ก่อนหน้านี้ ผมก็วุ่นวายอยู่กับการอัพเกรด Server ในแผนก เนื่องจาก CentOS ที่ใช้อยู่เก่าเกินกว่า จะอัพเกรด PHP จากเวอร์ชั่น 4 ไปเป็นเวอร์ชั่น 5 ก็เลยวุ่นวายพอสมควรที่ต้องโยกย้าย ถ่ายเทข้อมูลออก แล้วทำการติดตั้ง CentOS ใหม่ แล้วก็ลง PHP, MySQL ใหม่ด้วย ก็ดันมีปัญหากับข้อมูลอีก เวลาข้ามเวอร์ชั่นนี่ ต้องเช็คให้ดี ว่ามัน support กันใหม่ ทางทีดี ก็น่าจะลองบน VirtualBox ก่อนก็ได้นะครับ เผื่อความชัวร์

      โม้ซะเยอะ แลบลิ้น  มาเข้าเรื่องของเราดีกว่า วันนี้ก็ไม่มีอะไรมากครับ (ก็เลยโม้หน่อย)  แค่มาแนะนำเครื่องมือตัวหนึ่ง บน Linux ที่หลายๆ คนรู้จักดี บางทีเรามีความจำเป็นที่จะต้องให้ระบบของเรามีการทำงานอะไรบางอย่าง ที่ต้องทำสม่ำเสมอ และทำเป็นประจำเป็นเวลา ซึ่งอาจะเป็นประจำทุกชั่วโมง ทุกวัน ทุกวันอังคาร ทุกวันเสาร์สี่ทุ่ม อะไรประมาณนี้ ซึ่งเจ้าเครื่องมือ หรือบริการบน Linux ที่ผมจะแนะนำนี้ สามารถจัดการงานที่ต้องการ ที่ผมได้กล่าวไว้แล้วข้างต้นได้เป็นอย่างดี โปรแกรม หรือบริการที่ว่านี้ นี่ก็คือ Crontab

      ถ้าจะเปรียบเทียบง่ายๆ ก็คือ crontab ก็เหมือน scheduler หรือตัวจัดการงานตามเวลาที่เราได้ตั้งไว้นั่นเอง ซึ่งในระบบปฏิบัติการ Windows ก็มี ไม่รู้มีใครเคยใช้หรือเปล่า แต่ใน Linux แล้ว มันไม่ได้มีหน้าต่างให้ตั้งค่าอะไรสะดวกเหมือน windows ฉะนั้นเรามาศึกษาการตั้งค่าเจ้า crontab กันสักหน่อยครับ

แต่ละ user สามารถที่จะมี crontab หรือบางทีก็เรียก crond service ของแต่ละคน แยกจากกันได้ นั่นแปลว่า ถ้ามี user pi และ user root ก็สามารถที่จะตั้ง crontab แต่ละคนได้ ไม่ต้องใช้ crontab ร่วมกัน  โดยสามารถที่จะสร้าง หรือ ดู crontab ได้ด้วยคำสั่ง

crontab -e เพื่อสร้าง crontab ใหม่ หรือเข้าไปแก้ไข crontab ที่เราได้ตั้งไว้แล้ว
crontab -l เพื่อขอดูรายการ crontab ที่ตั้งไว้ (ดูเฉยๆ ไม่ได้ต้องการแก้ไข)

พอเราได้ลองใช้ คำสั่ง crontab -e แล้ว linux ก็จะทำการเลือก editor ตัวหนึ่งขึ้นมาให้เราทำการแก้ไข หน้าตา crontab เริ่มต้นจะประมาณนี้ (อาจจะแตกต่างกันไปบ้าง ตามแต่ linux แต่ละค่าย)

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

อันนี้เป็นข้อความ crontab ของ Raspian ใน Raspberry Pi ครับ

ต่อมาที่เราต้องทำความเข้าใจก็คือ ในการตั้งค่าให้ crontab ถูกกระตุ้นทำงาน ตามวัน เวลา นาที ชั่้วโมง ใดๆ ก็ได้ ดังต่อไปนี้

*     *     *     *     *  Command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- Day of week (0-7)
|     |     |     +------- Month (1 - 12)
|     |     +--------- Day of month (1 - 31)
|     +----------- Hour (0 - 23)
+------------- Min (0 - 59)

เราใช้การเว้น 1 ช่องว่าง เป็นการแยกแต่ละค่า และในทีนี้เครื่องหมาย * (ดอกจัน) หมายความว่า "ทุกๆ"  เช่น ผมตั้งว่า

5 * * * * Command to be executed
ความหมายก็คือ ผมให้ คำสั่งที่ถูกระบุในบรรทัดนี้ ถูกเรียกให้มาทำงาน ในนาที ที่ 5  ทุกๆชั่วโมง ทุกๆวันของเดือน ทุกๆสัปดาห์ ทุกๆวันของสัปดาห์

แล้วถ้าเป็นแบบนี้หล่ะ
* 1,2,3,4 * * * Command to be executed
ความหมายก็คือ ผมให้ คำสั่งที่ถูกระบุในบรรทัดนี้ ถูกเรียกให้มาทำงาน ใน ทุกๆนาที  ชั่วโมงที่ 1,2,3,4 ทุกๆวันของเดือน ทุกๆสัปดาห์ ทุกๆวันของสัปดาห์  ซึ่งในชั่วโมงที่ 1,2,3,4 นั่นคือ ตีหนึ่ง ถึง ตีสี่ นั่นเอง

     เอาหล่ะ ที่นี้ เรามาลองสร้าง crontab กันดูนะครับ สำหรับ user pi หลังจาก login แล้ว ให้เรียกคำสั่ง crontab -e จากนั้น เพิ่มบรรทัด ล่างสุด โดยไม่มีเครื่องหมาย # นำหน้านะครับ เพราะมันเป็นการ comment ในโปรแกรม

ผมเพิ่ม คำสั่งนี้ลงไป ใน crond service ของ pi

* * * * * /bin/date >> /home/pi/date.txt

crontab -e

ผมลองให้ shell เรียกคำสั่ง date ซึ่งถ้าเราลองเรียกคำสั่งนี้ ที่ console มันจะแสดงวัน เวลา ออกมาทางหน้าจอ

image

แต่เมื่อเรามาเขียนสั่งใน crontab มันไม่รู้ว่าจะไปแสดงหน้าจอไหน ผมก็เลย สั่งเปลี่ยนทิศทางการแสดงผล ให้ไปออกที่ text file ที่อยู่ใน /home/pi ชื่อ date.txt โดยให้เขียนต่อกันไปเรื่อยๆ ในไฟล์ date.txt สังเกต ผมใช้ >> แสดงว่าเป็นการเขียนต่อจากข้อความเก่า 

/bin/date >> /home/pi/date.txt

จากนั้นทำการบันทึก crond service ด้วยการออกจากโปรแกรม editor ซึ่งในที่นี้ เจ้า raspian ของเรามันใช้โปรแกรม nano ในการเป็น editor ซึ่งวิธีการออกจากโปรแกรมก็แค่ กด Ctrl+x แล้วกด y เพื่อยืนยันการเปลี่ยนแปลงสิ่งที่เราแก้ไข จากนั้น ไม่ต้องทำอะไรครับ รอดูผลที่เปลี่ยนแปลงใน /home/pi จะปรากฏไฟล์ date.txt เกิดขึ้น หลังจากเราได้บันทึกไปแล้ว ลองให้แสดงรายละเอียดข้างในไฟล์ด้วยคำสั่ง
cat /home/pi/date.txt ดูครับ จะเห็นว่า มีการเขียน วันเวลา ลงในไฟล์นี้

ถ้าเราอยากจะคอยตรวจดูว่า crond service เราได้ทำงานหรือเปล่า สามารถเช็คได้ด้วยคำสั่ง

tail -f /var/log/syslog ได้ครับ

raspberry pi crontab

      เราสามารถที่จะเขียนสคริปต์ด้วยภาษาใดก็ได้ ที่สามารถรัน ทำงานบน linux นี้ แล้วนำไปฝากไว้ที่ crond service ได้มากกว่า 1 คำสั่งได้ โดย 1 บรรทัด สามารถทำได้ 1 คำสั่ง หากต้องการเรียกหลายๆ คำสั่ง ก็เพิ่มจำนวนบรรทัด และเงื่อนไขเวลาการทำงานเข้าไปครับ

      คำถามก็คือ เราใช้ crontab ตอนไหน คำตอบก็คือ งานใดๆ ก็ตาม ที่ต้องทำเป็นประจำ เช่น backup ฐานข้อมูล, ลบไฟล์ที่ไม่จำเป็น, หรือแม้แต่สั่งเปิดปิด GPIO ตามเวลา ที่เรารู้อยู่แล้ว และต้องการให้เกิดเป็นประจำ เราก็ควรที่จะเอางานนั้นๆ เขียนลงไปในสคริปต์ แล้วมาฝากไว้ที่ crond service ครับ เพราะนอกจากเราไม่จำเป็นต้องเขียนโค๊ดให้วนรอบค้างไปเรื่อยๆ แล้วให้ทำงานตามที่เรากำหนดแล้ว ยังมั่นใจได้ว่า หากระบบเราถูกรีเซตแล้ว crond service จะกลับมาทำงานได้เหมือนเดิม และคำสั่งที่ถูกเขียนลงไป นั้น จะถูกเรียกทำงานได้ตามปกติอีกด้วย

      ในตอนต่อไป ผมจะให้เจ้า crontab ทำการเรียก script python เพื่อดูค่า ip router ที่เป็นระดับ WAN เพื่อที่เราจะได้ทราบว่า ip router ของเราหมายเลขอะไร เพื่อจะได้ทำการรีโมทจากภายนอกบ้าน เข้ามาจัดการบอร์ด Raspberry pi ของเรานะครับ คอยติดตามชมหล่ะกัน ว่าผมจะทำยังงัย ^_^ 

อ่านเพิ่มเติม...
 

แจกฟรี พื้นที่ฝากไฟล์ 15 GB

ติดตามข่าวสารผ่าน Twitter

ติดตาม Blog นี้

About Me

My photo

สวัสดีครับ ชื่อเปิ้ลนะครับ ถ้ามีอะไรให้ช่วยเหลือได้ ก็จะช่วยครับ
ผมได้สร้างบล๊อกไว้ เพื่อเก็บรวบรวมความรู้ และประสบการณ์ในการทำงานครับ แวะไปเยี่ยมชมกันได้ครับ http://mechacity.blogspot.com และบล๊อก http://faker-programmer.blogspot.com ครับ

Blog อื่นๆของฉัน

Microcontroller Electronics update

สถิติเยี่ยมชมบล๊อก