Broadcast a message
เมื่อ Admin ต้องการส่งข้อความไปหาทุกคนที่กำลัง login อยู่ในระบบ (text mode) ก็มีหลายทางเลือกให้ใช้งาน และในบทความนี้ ผมจะเสนอวิธีการส่งข้อความไปหา user อื่น ง่ายๆ โดยแบ่งรูปแบบการส่งออกเป็น 2 วิธี ด้วยกัน คือ การส่งข้อความแบบ broadcast message (ส่งไปทุก user ที่ login อยู่) และการส่งข้อความตรงไปยัง user ที่ต้องการ ซึ่งทั้ง 2 วิธีสามารถทำตามวิธีข้างล่างได้ดังนี้

  1. การส่งข้อความแบบ broadcast message (ส่งไปทุก user ที่ login อยู่)

    การส่งข้อความแบบ broadcast เราจะใช้คำสั่ง “wall” ซึ่งเป็นคำสั่งที่เอาไว้ส่งข้อความแบบ broadcast และจะใช้คำสั่ง “echo” เพื่อใช้ print ข้อความที่ต้องการ
    รูปแบบคำสั่ง

    [shell][user1Ezylinux ~]$ echo -e "Text for send" | wall[/shell]

    ข้อความที่ user ทุกคนจะได้รับ

    [shell]Broadcast message from [email protected] (Mon Nov 14 21:13:06 2011):

    Text for send
    [/shell]

    หากต้องการส่งข้อความแบบมีการขึ้นบรรทัดให้ให้เพิ่ม “\n” เข้าไปยังข้อความสุดท้ายของบรรทัด

    ตัวอย่าง
    [shell][user1Ezylinux ~]$ echo -e ‘Message1 \nMessage2’ |wall

    Broadcast message from [email protected] (Mon Nov 14 21:13:18 2011):

    Message1
    Message2
    [/shell]

  2. การส่งข้อความตรงไปยัง user ที่ต้องการ
    วิธีการนี้เราจำเป็นต้องรู้ก่อนว่า user ที่เราต้องการส่งข้อความหา login อยู่ที่ TTY อะไร โดยใช้คำสั่ง “w”
    [shell]
    [user1Ezylinux ~]$ w
    21:50:47 up 58 days, 21:27, 3 users, load average: 0.00, 0.00, 0.00
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    user1 pts/1 56.7.8.8 20:57 0.00s 0.04s 0.00s w
    user2 pts/2 56.7.8.9 20:57 37:29 0.00s 0.00s -bash
    user3 pts/3 56.7.8.10 21:13 26:25 0.00s 0.01s sshd: user3 [priv]
    [/shell]

    หลังจากนั้นให้เราดูที่ TTY เพื่อดูว่า user ที่ต้องการส่งหาอยู่ที่ pts หรือ tty ไหน และใช้คำสั่ง “echo” เพื่อส่งข้อมูลไปยัง /dev/pts/n โดยที่ n คือหมายเลขของ terminal

    ตัวอย่างเช่น ผมคือ user1 ต้องการส่งจะส่งข้อความ “Message1 ไปหา user2 โดยตรง ซึ่งผลลัพธ์จากคำสั่ง “w” ทำให้รู้ว่า user2 มี TTY เป็น pts/2 ดังนั้น สามารถใช้คำสั่งได้ดังนี้
    [shell]
    [user1Ezylinux ~]$ echo -e "\nMessage1" > /dev/pts/2
    [/shell]
    user2 จะได้รับข้อความดังนี้
    [shell]
    [user2Ezylinux ~]$
    Message1
    [/shell]