PHP를 사용하여 원격 컴퓨터에서 우분투에서 쉘 명령을 실행하십시오.

PHP를 사용하여 원격 컴퓨터에서 우분투에서 쉘 명령을 실행하십시오.

웹 페이지에서 원격 컴퓨터에서 Python 스크립트를 실행하는 버튼을 원합니다. PHP에서 이것을 할 수 있는 방법이 있나요? 보다 구체적으로, 원격 시스템에서 다음 셸 명령을 실행하고 싶습니다.

screen -d -m ./script.py

스크립트를 실행하는 데 루트 액세스가 필요하지 않기 때문에 이것이 사소한 것이 아닐 수도 있다고 생각했습니다.

답변1

이것이 여러 수준에서 안전하지 않은 접근 방식이라는 점을 지적하면서 시작하겠습니다. 라고 한:

script.py를 실행하기 위해 루트여야 한다면 웹사이트 사용자는 sudoers를 구성해야 합니다. 먼저, 웹사이트 사용자가 누구인지 알아내야 합니다.

그런 다음 해당 사용자가 비밀번호 없이 script.py를 실행할 수 있도록 sudo 권한을 설정합니다. 예:

apache ALL=NOPASSWD: /full/path/to/your/script.py

그런 다음 실행 가능한 비트를 script.py에 추가합니다.

chmod +x /full/path/to/your/script.py

어쩌면 py 스크립트의 헤더를 다음과 같이 변경해야 할 수도 있습니다.

#! /usr/bin/python

그런 다음 PHP에서 shell_exec를 사용하여 스크립트를 실행할 수 있습니다. 예를 들면 다음과 같습니다.

$output = shell_exec('/full/path/to/your/script.py');

답변2

다음 스니펫을 사용하여 수행할 수 있지만 요청이 보안 문제인 것 같습니다. 원격 호스트에 HTTP를 통해 쿼리할 수 있는 API가 있으면 더 좋을 것입니다.

<?php
   $output = shell_exec('ssh user@remotehost script.py');
   echo "<pre>$output</pre>";
?>

관련 정보