Скрипт Python не выполняется из PHP

#php #python-2.7 #shell #exec

#php #python-2.7 #оболочка #exec

Вопрос:

Я пытаюсь выполнить этот файл python ниже, когда post-запрос отправляется на веб-сервер apache. Я включил скриншоты, которые показывают путь и все остальное, что может быть полезно, например, разрешения (/usr /bin / python amp; executable). Оба файла php и py находятся в папке var/www/html/ . Заранее благодарю вас за любой запрос. Я изменил exec(‘load.py ‘), в exec(‘/usr/bin/python load.py ‘) безрезультатно.

load.py

 #!/usr/bin/python
import re
import paramiko

f = open('blocked.txt', 'r')
f = str(f.read())
#print(f)
s = f.find('epip="')
e = f.find(' epname="')
string = str(f[s:e])
string = re.findall(r'"([^"]*)"', string)
string = string[0]
print(string)


hostname = 'xxx'
username = 'xxx'
password = 'xxx'
ssh_client=paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=hostname, username=username, password=password)
stdin,stdout,stderr=ssh_client.exec_command('config firewall address n '   'edit '   string   'n'   'set subnet '   string   '/32 n '   'end n'   'config firewall addrgrp n '  'edit BlockedIPs n '   'append member '   string   'n '   'end n')
test = stdout.readlines()
print(string   ' has been added to the BlockedIPs group')
  

blocked.php

 <html>
<body>
<?php
$file = 'blocked.txt';
$arr = $_POST;
$fp = fopen($file, 'w') or die('Can not open!');
foreach ($arr as $key => $value) {
    $toFile = "$value";
fwrite($fp, $toFile) or die('could not write to file');
}
fclose($fp);

$command = escapeshellcmd('load.py');
$output = shell_exec($command);
echo $output;?>

<br>
</body>
</html>
  

Путь

Разрешение

Комментарии:

1. Есть ли сообщение об ошибке? exec принимает в качестве 2-го аргумента выходную переменную, а 3-ю — переменную кода возврата, вы проверили это?

2. Поскольку сообщение поступает с устройства, я не уверен, как просмотреть ошибку. Если get, я бы открыл консоль Chrome, но для запроса post не уверен, куда идти, чтобы найти какую-либо информацию об ошибке. Я вижу, что создается текстовый файл, который сообщает мне, что первая часть файла php работает, когда он получает сообщение. Если я запускаю код python из cli без sudo, он работает.

3. Хм, интересно, мне нужно перезапустить apache?

4. Вы можете добавить отладочную информацию в скрипт и ОПУБЛИКОВАТЬ ее. (Вы можете отправить свой собственный POST-запрос, используя curl или используя что-то вроде «Postman»).