Chciałem nadawać wiadomość do wszystkich terminalu bash na moim Raspbian.
Rozumiem, że istnieje polecenie Wall, aby wykonać krok i mogłem użyć modułu OS.System Python, aby wykonać polecenie.
Jednak uruchomienie polecenia "Wall Text.txt" wymaga przywileju sudo. Czy jest jakiś sposób, aby użyć komendy ściennej z STDIN z Pythona?
2 odpowiedzi
Właściwie musi być superużytkownik do uruchomienia wall
za pomocą pliku wejściowego, man
mówi:
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.
Ale możesz to zrobić:
$ 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
>>>
Możesz użyć "echo" i rury "|" To do Wall.it nie jest konieczne, aby echo wypełnić najpierw.
echo hello | wall
Podobne pytania
Powiązane pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.