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 ข้อความที่ต้องการ รูปแบบคำสั่ง
[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 -
การส่งข้อความตรงไปยัง 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/2user2 จะได้รับข้อความดังนี้
[user2Ezylinux ~]$ Message1