Linux: Jak wysłać wiadomość do lokalnego użytkownika zalogowanego do X11?
10
Czy można wysłać wiadomość (wyskakujące okienko lub coś) do lokalnego użytkownika zalogowanego do X (xdm, fluxbox) z konsoli? Na przykład: user1jest zalogowany i używa X / fluxboksa, user2loguje się w tym samym polu przez ssh do konsoli. Teraz - co user2trzeba zrobić, aby wysłać wiadomość user1?
Jeśli odbiorca ( user1w moim przykładzie) jest zalogowany do X11 i nie otworzył się xtermlub inny terminal - też będzie walldziałał? Myślę, że user1nie zobaczy wiadomości.
marioosh
Zaktualizowałem swoją odpowiedź, aby uwzględnić rozwiązanie „xmessage”. To pokaże małe okno dla użytkownika, niezależnie od tego, czy ma otwarty terminal.
mjk
1
Nawiasem mówiąc, „apropos” jest użytecznym narzędziem do poznania; przeszukuje strony podręcznika pod kątem przekazywanego tekstu. Spróbuj uruchomić „komunikat apropos” i zobacz, co zwraca.
mjk
Wiem, xmessageale jak go uruchomić user1i otworzyć to małe okno na user2ekranie? czy to w ogóle możliwe?
marioosh
@marioosh Chciałbym również wiedzieć, jak to zrobić. Czy kiedykolwiek to rozgryzłeś?
2
Z reguły sesje X11 są zwykle uruchamiane w trybie „prywatnym”, więc potrzebujesz jednej z dwóch rzeczy: albo współpracy, user2aby umożliwić dostęp do ich ekranów, albo uprawnień administratora do „włamania się” do ich ekranów.
NIEBEZPIECZEŃSTWO: Pamiętaj, że po uzyskaniu dostępu do ich ekranu możesz także robić zrzuty klawiszy (potencjalnie włączając hasła) i robić zrzuty ekranu, więc jest to duże zagrożenie bezpieczeństwa.
W większości przypadków lepiej jest używać do tego celu narzędzia do przesyłania wiadomości lub programu do czatowania.
Poza zastrzeżeniami:
Współdziałanie
Jeśli user2chcesz zezwolić user1na dostęp do ich ekranu, najpierw user2musisz wydać polecenie:
xhost +si:localuser:user1
Można to potencjalnie dodać do jakiegoś skryptu startowego; Nie znam Fluxboksa, ale zakładam, że ma rchaczyk na początku sesji.
Po przeanalizowaniu tego, user1może napisać na user2wyświetlaczu, jeśli będzie w stanie go znaleźć.
Jeśli user2jest tego świadomy, zawsze mogą go wysłać user1w inny sposób.
Znajdowanie wyświetlacza innego użytkownika
Na typowej stacji roboczej zdarza się, że zalogowanych jest więcej niż jeden lub dwóch użytkowników; w takim przypadku „zgadywanie”, że pożądany ekran to 0, 1, a może 2, może być wykonalnym rozwiązaniem.
Jednak, aby uzyskać bardziej kompletne rozwiązanie, załóżmy, że masz komputer, na którym można się zalogować bardzo wielu użytkowników, i spróbuj znaleźć ten, który chcesz.
for proc in /proc/[0-9]*/
do
if [ Xorg = $(< $proc/comm ) ] 2>/dev/null && \
[ $(id -u user2) -eq $(< $proc/loginuid) ] 2>/dev/null
then
for subproc in $(
do
echo "user2 display=" $(perl -ne 'if (m,DISPLAY=(.*)\0,) { print $1 }' < $subproc/environ)
done
fi
done
to user1może w końcu (używając wartości DISPLAY uzyskanej powyżej; właśnie :14.0tu napisałem …)
DISPLAY=:14.0 xmessage "Hello, user2"
Zamiast tego wysyłam powiadomienie
W trosce o kompletność, co najmniej następujące działa na pulpicie Gnome. Nie wiem, czy Fluxbox ma widget powiadomień.
DISPLAY=:14.0 notify-send "Hello, user2"
Ma o wiele bardziej przyjazne dla użytkownika opcje wyświetlania i prawdopodobnie pojawi się w bardziej przyjazny sposób na ekranie użytkownika.
user1
w moim przykładzie) jest zalogowany do X11 i nie otworzył sięxterm
lub inny terminal - też będziewall
działał? Myślę, żeuser1
nie zobaczy wiadomości.xmessage
ale jak go uruchomićuser1
i otworzyć to małe okno nauser2
ekranie? czy to w ogóle możliwe?Z reguły sesje X11 są zwykle uruchamiane w trybie „prywatnym”, więc potrzebujesz jednej z dwóch rzeczy: albo współpracy,
user2
aby umożliwić dostęp do ich ekranów, albo uprawnień administratora do „włamania się” do ich ekranów.NIEBEZPIECZEŃSTWO: Pamiętaj, że po uzyskaniu dostępu do ich ekranu możesz także robić zrzuty klawiszy (potencjalnie włączając hasła) i robić zrzuty ekranu, więc jest to duże zagrożenie bezpieczeństwa.
W większości przypadków lepiej jest używać do tego celu narzędzia do przesyłania wiadomości lub programu do czatowania.
Poza zastrzeżeniami:
Współdziałanie
Jeśli
user2
chcesz zezwolićuser1
na dostęp do ich ekranu, najpierwuser2
musisz wydać polecenie:Można to potencjalnie dodać do jakiegoś skryptu startowego; Nie znam Fluxboksa, ale zakładam, że ma
rc
haczyk na początku sesji.Po przeanalizowaniu tego,
user1
może napisać nauser2
wyświetlaczu, jeśli będzie w stanie go znaleźć.Jeśli
user2
jest tego świadomy, zawsze mogą go wysłaćuser1
w inny sposób.Znajdowanie wyświetlacza innego użytkownika
Na typowej stacji roboczej zdarza się, że zalogowanych jest więcej niż jeden lub dwóch użytkowników; w takim przypadku „zgadywanie”, że pożądany ekran to 0, 1, a może 2, może być wykonalnym rozwiązaniem.
Jednak, aby uzyskać bardziej kompletne rozwiązanie, załóżmy, że masz komputer, na którym można się zalogować bardzo wielu użytkowników, i spróbuj znaleźć ten, który chcesz.
to
user1
może w końcu (używając wartości DISPLAY uzyskanej powyżej; właśnie:14.0
tu napisałem …)Zamiast tego wysyłam powiadomienie
W trosce o kompletność, co najmniej następujące działa na pulpicie Gnome. Nie wiem, czy Fluxbox ma widget powiadomień.
Ma o wiele bardziej przyjazne dla użytkownika opcje wyświetlania i prawdopodobnie pojawi się w bardziej przyjazny sposób na ekranie użytkownika.
źródło
for subproc in
co? Myślę, że twój skrypt jest tutaj uszkodzony.