How do I broadcast messages to all bash terminal in python using wall command with stdin?

10,285

Solution 1

It is indeed required to be a superuser to run wall with an input file, man says:

NAME
     wall - write a message to users

SYNOPSIS
     wall [file]

DESCRIPTION
     Wall displays the contents of file or, by default, its standard input, on the terminals of all currently logged in users.

     Only the super-user can write on the terminals of users who have chosen to deny messages or are using a program which automatically denies messages.

     Reading from a file is refused when the invoker is not superuser and the program is suid or sgid.

But you can do this:

$ echo hello hello >text.txt
$ python                    
Python 2.7.1 (r271:86832, Mar 18 2011, 09:09:48) 
[GCC 4.5.0 20100604 [gcc-4_5-branch revision 160292]] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.system('cat text.txt | wall')

Broadcast Message from mak@vader                                             
        (/dev/pts/14) at 10:31 ...                                             

hello hello                                                                    


Broadcast Message from mak@vader                                            
        (/dev/pts/14) at 10:31 ...                                             

hello hello                                                                    

0
>>> 

Solution 2

you can use "echo" and pipe "|" it to wall.it's nit necessary to echo to fill first.

echo hello | wall
Share:
10,285
Admin
Author by

Admin

Updated on June 05, 2022

Comments

  • Admin
    Admin almost 2 years

    I wanted to broadcast message to all the bash terminal on my raspbian.

    I understand that there's wall command to perform the step and I could use os.system python module to execute the command.

    However, running the command "wall text.txt" requires sudo privilege. Is there any way to use wall command with stdin from python?

  • keyser
    keyser over 9 years
    So a cat circumvents this? Do you happen to understand why they put root privileges on file reading then?
  • Admin
    Admin over 9 years
    I've tried it and it works. Piping the file to wall command circumvent root privilege as it becomes a stdin
  • keyser
    keyser over 9 years
    Yes I know it works, and I know why it works. I just find it odd that wall puts such a privilege on file reading for no apparent reason.
  • piokuc
    piokuc over 9 years
    I have no idea what the motivation of the authors of wall was. I find it quite peculiar, too.