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 ข้อความที่ต้องการ
รูปแบบคำสั่ง123[user1Ezylinux ~]$ echo -e "Text for send" | wallข้อความที่ user ทุกคนจะได้รับ
12345Broadcast message from user1@ezylinux.com (Mon Nov 14 21:13:06 2011):Text for sendหากต้องการส่งข้อความแบบมีการขึ้นบรรทัดให้ให้เพิ่ม “\n” เข้าไปยังข้อความสุดท้ายของบรรทัด
ตัวอย่าง
12345678[user1Ezylinux ~]$ echo -e 'Message1 \nMessage2' |wallBroadcast message from user1@ezylinux.com (Mon Nov 14 21:13:18 2011):Message1Message2 - การส่งข้อความตรงไปยัง user ที่ต้องการ
วิธีการนี้เราจำเป็นต้องรู้ก่อนว่า user ที่เราต้องการส่งข้อความหา login อยู่ที่ TTY อะไร โดยใช้คำสั่ง “w”12345678[user1Ezylinux ~]$ w21:50:47 up 58 days, 21:27, 3 users, load average: 0.00, 0.00, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATuser1 pts/1 56.7.8.8 20:57 0.00s 0.04s 0.00s wuser2 pts/2 56.7.8.9 20:57 37:29 0.00s 0.00s -bashuser3 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 ดังนั้น สามารถใช้คำสั่งได้ดังนี้
123[user1Ezylinux ~]$ echo -e "\nMessage1" > /dev/pts/2user2 จะได้รับข้อความดังนี้
1234[user2Ezylinux ~]$Message1