Shell และสคริปต์

How to broadcast a message to all users and direct message to some user

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 ข้อความที่ต้องการ รูปแบบคำสั่ง

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

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

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

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

    [user1Ezylinux ~]$ echo -e 'Message1 \nMessage2' |wall
    
    Broadcast message from [email protected] (Mon Nov 14 21:13:18 2011):
    
    Message1
    Message2
  2. การส่งข้อความตรงไปยัง user ที่ต้องการ วิธีการนี้เราจำเป็นต้องรู้ก่อนว่า user ที่เราต้องการส่งข้อความหา login อยู่ที่ TTY อะไร โดยใช้คำสั่ง “w”

    
    [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]

    หลังจากนั้นให้เราดูที่ TTY เพื่อดูว่า user ที่ต้องการส่งหาอยู่ที่ pts หรือ tty ไหน และใช้คำสั่ง “echo” เพื่อส่งข้อมูลไปยัง /dev/pts/n โดยที่ n คือหมายเลขของ terminal ตัวอย่างเช่น ผมคือ user1 ต้องการส่งจะส่งข้อความ “Message1 ไปหา user2 โดยตรง ซึ่งผลลัพธ์จากคำสั่ง “w” ทำให้รู้ว่า user2 มี TTY เป็น pts/2 ดังนั้น สามารถใช้คำสั่งได้ดังนี้

    
    [user1Ezylinux ~]$ echo -e "\nMessage1" > /dev/pts/2

    user2 จะได้รับข้อความดังนี้

    
    [user2Ezylinux ~]$
    Message1
EOF.← กลับไปอ่านบทความอื่น