У меня есть этот скрипт на python, который я использую для размещения на своем компьютере веб-сервера php, чтобы я мог запускать команды с любого устройства в доме. (просто решил, что это проще, чем подключиться к сеансу ssh; я знаю, что это не так эффективно, но я использую его для запуска сценариев, а не для чтения и записи файлов.) Команда php, которую я использую для запуска сервера, сообщает мне, когда кто-то запрашиваеткогда кто-то посещает его и показывает URL. В моем php & html, который я размещаю, я использую GET для команд, так что в команде php он сообщает, какие команды выполняются, а также отметку времени и IP-адреса. Я хочу проанализировать этот вывод так, чтобы он не только сообщал мне о том, что были сделаны запросы, но и в простом формате сообщал мне, что это такое, не читая полный ответ. Я использую команду php -S внутри python, используя модуль os и popen. Я пытался сделать несколько вещей, чтобы достичь этого, но начинаю думать, что это невозможно в Python. Ниже приведен скрипт на python:
import os
import subprocess
import socket
run = os.popen
get_ip = os.popen('ip r')
ip = str([get_ip.read()])
strIP = str(ip.partition('src')[2]).partition('metric')[0].strip(' ')
run('fuser -k 8000/tcp')
print('[!]Current IP:' + strIP)
print('[!]Hostname:' + socket.gethostbyname(socket.gethostname()))
print('[!]Hostname:' + socket.getfqdn())
run('rm /var/www/html/index.html; rm /var/www/html/index.nginx-debian.html; cp -r index.html /var/www/html/; cp -r execute.php /var/www/html/; cp -r tp /var/www/html/; service apache2 restart')
print('[!]Stating PHP Server at http://' + strIP + ':8000')
pushServ = run('php -S ' + ip + ':8000 -t /var/www/html/')
В вышеприведенном скрипте я не использовал методы, чтобы попытаться получить вывод, чтобы он был короче, но я попытался сделать pushServ для циклов иесли операторы вроде, если команда была выполнена, выведите то, что это было;«[!] Command_Event: 'ls -la' запускается из 192.168.1.1" (любой ip, который запускает команду). Я знаю, что вы можете легко разделить вывод на оператор print, подобный этому, но моя проблема в том, что я не могу найти способчтобы это произошло, потому что php -S работает постоянно, пока вы не нажмете CTRL + C, что остановит сервер, который, в свою очередь, не сгенерирует никаких выходных данных для этого.