How to broadcast a message to all users and direct message to some user
เมื่อ Admin ต้องการส่งข้อความไปหาทุกคนที่กำลัง login อยู่ในระบบ (text mode) ก็มีหลายทางเลือกให้ใช้งาน และในบทความนี้ ผมจะเสนอวิธีการส่งข้อความไปหา user อื่น ง่ายๆ โดยแบ่งรูปแบบการส่งออกเป็น 2 วิธี ด้วยกัน คือ การส่งข้อความแบบ broadcast message (ส่งไปทุก user ที่ login อยู่) และการส่งข้อความตรงไปยัง user ที่ต้องการ ซึ่งทั้ง 2 วิธีสามารถทำตามวิธีข้างล่างได้ดังนี้
- การส่งข้อความแบบ 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’ |wallBroadcast message from [email protected] (Mon Nov 14 21:13:18 2011):
Message1
Message2
[/shell] - การส่งข้อความตรงไปยัง 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]