웹 페이지에서 원격 컴퓨터에서 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>";
?>