답변:
이 xmessage
도구를 사용하면 정확히 그렇게 할 수 있습니다. 내부에 문자 메시지가있는 사용자에게 팝업 창을 표시합니다.
예 : user2가 상자에서 BASH 세션에 로그인하여 다음을 실행합니다.
export DISPLAY=':0.0'
xmessage "some message here"
TSCH 세션에 로그인하면 다음과 같습니다.
setenv DISPLAY ':0.0'
xmessage "some message here'
또는 다음 두 가지 방법 중 하나로 터미널 세션에 메시지를 보낼 수 있습니다.
사용 wall
(= 모든 [사용자] 경고)
맨 페이지에서 :
Wall은 파일의 내용 또는 기본적으로 표준 입력을 현재 로그인 한 모든 사용자의 터미널에 표시합니다.
특정 사용자를 타겟팅하려면을 사용하십시오 write
. 다시, 사람은 우리에게 말합니다 :
쓰기 유틸리티를 사용하면 터미널에서 행으로 행을 복사하여 다른 사용자와 통신 할 수 있습니다.
xmessage
어떻게 실행 user1
하고이 작은 창을 화면에 열리게 user2
합니까? 가능합니까?
일반적으로 X11 세션은 일반적으로 "비공개"모드에서 시작되므로 두 가지 중 하나가 필요합니다. user2
화면에 액세스 할 수있는 협력 또는 화면에 "침입"하는 수퍼 유저 권한 중 하나입니다 .
위험 : 일단 화면에 액세스 한 후에는 키 입력 (암호 포함) 캡처 및 스크린 샷 캡처와 같은 작업을 수행 할 수 있으므로 보안 상 큰 위험이 따릅니다.
에서는 대부분의 경우 대신 이러한 것들에 대한 메시징 도구 또는 채팅 프로그램을 사용하는 것이 바람직합니다.
주의 사항 :
협력
경우 user2
욕구가 수 있도록 user1
자신의 화면에 액세스하려면 먼저 user2
같은 명령을 실행해야합니다 :
xhost +si:localuser:user1
이것은 일종의 시작 스크립트에 추가 될 수 있습니다. Fluxbox는 모르지만 rc
세션 시작 후크 가 있다고 가정합니다 .
이것은 issed되면, user1
다음에 쓸 수 user2
그들은 그것을 찾을 수 있다면,의 표시.
user2
이를 알고 있으면 언제든지 user1
다른 방법으로 보낼 수 있습니다 .
다른 사용자의 디스플레이 찾기
일반적인 워크 스테이션에서는 한두 명 이상의 사용자가 로그인하는 것이 일반적이지 않습니다. 이 경우, 원하는 디스플레이가 0, 1 또는 2 일 수 있다는 "추측"은 실행 가능한 솔루션 일 수 있습니다.
그러나보다 완벽한 솔루션을 위해 많은 사용자가 로그인 할 수있는 컴퓨터가 있다고 가정하고 원하는 것을 찾으십시오.
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
그런 다음 user1
마침내 (위에서 얻은 DISPLAY 값을 사용하여 방금 작성 :14.0
했습니다 ...)
DISPLAY=:14.0 xmessage "Hello, user2"
대신 알림 보내기
완벽을 기하기 위해 다음은 Gnome 데스크탑에서 작동합니다. Fluxbox에 알림 위젯이 있는지 모르겠습니다.
DISPLAY=:14.0 notify-send "Hello, user2"
여기에는 훨씬 더 사용자에게 친숙한 표시 옵션이 있으며 아마도 사용자 화면에 더 친숙한 방식으로 나타납니다.
for subproc in
뭐? 귀하의 스크립트가 여기에 손상되었다고 생각합니다.
user1
내 예에서)가 X11에 로그인했는데 열리지 않았xterm
거나 다른 터미널 이 없으면wall
작동합니까? 나는 그것이user1
메시지를 보지 못할 것이라고 생각 합니다.