PHP를 사용하여 웹사이트에서 GUI 프로그램을 시작하는 방법

PHP를 사용하여 웹사이트에서 GUI 프로그램을 시작하는 방법

우리 회사에는 모니터가 연결되지 않고 다른 방화벽 뒤에 Ubuntu 12.04를 실행하는 회사가 있습니다.

Teamviewer이 서버의 로컬 웹사이트 방문자는 나(또는 다른 지원 관리자)에게 그래픽 액세스 권한을 제공하는 것과 같은 GUI 프로그램을 실행할 수 있어야 합니다 .

.gksu

sudoers이를 달성하려면 어떻게 구성해야 합니까 ?

이 서버에서 실행되는 PHP 스크립트에서 어떻게 호출합니까?

물론 쉽게 ssh를 사용하거나 X 세션을 내 컴퓨터에 연결할 수 있지만 이와 같은 Teamviewer 로그인이 필요합니다. 이것이 모든 서버의 다양한 방화벽을 통과하는 가장 쉬운 방법이기 때문입니다.

답변1

면책조항: 저는 Teamviewer 제품에 대해 아무것도 모르지만 실행하려는 기존 x-windows 응용 프로그램처럼 취급하겠습니다.

GUI 응용 프로그램을 시작하려면 .xinitrc또는 (일부 데스크탑 환경에서는) 사용을 고려하십시오.~/.config/autostart/

그런데... 프로그램을 대화형으로 실행하고 싶은 것 같나요? 즉, 요청 시 실행되기를 원하며 데스크탑 환경에서 실행되어야 합니다.

우선, www-data 사용자에게 sudoer를 통해 특별한 권한을 실제로 부여하지 않는 것이 좋습니다. 특히 공개 서비스가 있는 웹 서버에 이 사용자를 사용하는 경우에는 더욱 그렇습니다.

"sysadmin" 또는 이와 유사한 사용자를 생성하고 적절한 권한을 부여하는 것이 좋습니다.

그런 다음 PHP 스크립트가 /tmp/에 플래그 파일을 배치하고 다른 사용자가 해당 파일에 대해 작업하도록 하는 등 영향이 적은 작업을 수행하도록 합니다.

그래서 저는 다음과 같은 PHP 스크립트를 가지고 있습니다:

<?php
   // Trigger for the team view launcher.
   file_put_contents("/tmp/teamviewflag","1");
?>

그러면 다음과 같은 크론 작업을 갖게 됩니다.

* * * * * /home/sysadmin/.jobs/teamstarter.sh

(경고: 이 스크립트는 1분에 한 번만 실행됩니다. 따라서 최대 1분까지 기다려야 합니다. 이 스크립트를 반복해서 실행할 수 있습니다.)

그럼 나는/home/sysadmin/.jobs/teamstarter.sh

#!/bin/bash
if [ -f /tmp/teamviewflag ]
  then
    env DISPLAY=:1 XAUTHORITY=/home/sysadmin/.Xauthority /path/to/teamviewer
    rm /tmp/teamviewflag
fi

이렇게 하면 PHP 스크립트에서 요청 시 실행됩니다. 거친 가장자리를 사포질해야 할 수도 있습니다.

  • Teamviewer는 PHP 스크립트가 실행될 때마다 실행됩니다.
  • Bash 스크립트의 4행에서는 사용자가 DISPLAY번호를 알고 있다고 가정합니다.
  • "Hey Team Viewer가 실행 중입니다"라는 "잠금 파일"을 갖고 해당 파일의 존재 여부에 따라 스크립트를 실행할 수도 있습니다. 그리고 팀뷰어 종료 후 잠금파일을 후속조치하고 정리하는 작업이 있습니다.

다음은 루프에서 실행되는 위 스크립트의 예입니다.

#!/bin/bash
while :
do
  if [ -f /tmp/teamviewflag ]
    then
      env DISPLAY=:1 XAUTHORITY=/home/sysadmin/.Xauthority /path/to/teamviewer
      rm /tmp/teamviewflag
  fi
  # Sleep for a half second.
  usleep 500000  
done

다음과 같이 "적절하게" 실행할 수 있습니다(그래서 일정 우선순위가 낮음).

nice -n 19 /home/sysadmin/.jobs/teamstarter.sh

부팅 시 시작하려면 다음과 같이 cron 탭에 넣을 수 있습니다.

@reboot /home/sysadmin/.jobs/teamstarter.sh

관련 정보