Подтвердить что ты не робот

Как создать веб-страницу с кнопками, которые вызывают различные скрипты Python в системе, обслуживающей веб-страницу?

Я - любитель (и довольно новый) программист, который написал несколько полезных (для меня) скриптов на python для обработки различных задач автоматизации системы, которые включают в себя копирование, переименование и загрузку файлов среди других видов деятельности.

Я хотел бы создать веб-страницу, обслуживаемую из одной из моих систем, которая просто представила бы несколько кнопок, которые позволили бы мне инициировать эти сценарии удаленно.

Проблема в том, что я не знаю, с чего начать расследование, как это сделать. Скажем, у меня есть script:

file_arranger.py

Что мне нужно сделать, чтобы веб-страница выполняла это script? Это не предназначено для общественного потребления, поэтому ничего легкого было бы здорово. Для бонусных очков, что мне нужно, чтобы посмотреть, чтобы предоставить веб-пользователю вывод из таких скриптов?

edit: Первый ответ заставил меня понять, что я забыл включить, что это система Win2k3.

4b9b3361

Ответ 1

Эта страница на сайте python имеет хорошее описание и пример того, что вам нужно сделать, чтобы запустить CGI python script. Сначала начните с простейшего случая. Просто сделайте короткий script, который печатает html.

#!/usr/bin/python                   #on windows change to your path to the python exe

print "Content-Type: text/html"     # HTML is following
print                               # blank line, end of headers
print "<TITLE>CGI script output</TITLE>"
print "<H1>This is my first CGI script</H1>"
print "Hello, world!"

Когда вы пытаетесь это сделать в первый раз, самая сложная часть обычно вычисляет, куда класть script и как заставить веб-сервер распознавать и запускать его. Если вы используете веб-сервер apache, посмотрите эти шаги настройки.

Как только у вас будет этот простой script рабочий, вам просто нужно добавить html-форму и тег кнопки и использовать свойство action, чтобы указать на скрипты, которые вы хотите запустить.

Ответ 2

Этот простой подход не требует ничего, кроме стандартной библиотеки Python. Создайте эту структуру каталогов:

.
|-- cgi-bin
|   `-- script.py
|-- index.html
`-- server.py

Вы помещаете свои скрипты в каталог "cgi-bin", "index.html" содержит ссылки на скрипты в каталоге "cgi-bin" (поэтому вам не нужно вводить их вручную, хотя вы могли бы), и "server.py" содержит следующее:

import CGIHTTPServer
CGIHTTPServer.test()

Чтобы запустить сервер, просто запустите "server.py". Что это, нет Apache, никаких других зависимостей.

НТН...

Ответ 3

Все, что вам нужно, это иметь его в каталоге, который предназначен для выполнения сценариев CGI, тогда вам нужно добавить

#!/usr/bin/env python

вверху, и он должен выполнить script как обычный питон script, если вы ссылаетесь на него. (например, вы бы использовали HTML или PHP файл)

Это, конечно, предполагает, что ваш веб-сервер настроен на выполнение CGI вообще, и что у вас есть Linux-система.

Существуют и другие альтернативные решения, если вам нужно что-то более интересное, например mod_python и веб-фреймворки, такие как Pylons, но я думаю, что решение CGI лучше подходит для вашего прецедента.

[EDIT]

В Windows, если у вас есть Apache, вы ДОЛЖНЫ иметь возможность использовать тот же метод, но заменяя материал за #! с путём к вашему python.exe, например:

#!C:\Python25\python.exe -u

Кажется, что -u необходимо поставить Python в небуферизованный режим в соответствии с этой ссылкой, которая также имеет более подробную информацию: http://www.imladris.com/Scripts/PythonForWindows.html

Ответ 4

Вы должны заглянуть в CherryPy в качестве обработчика запросов HTTP, который можно настроить для запуска поверх очень легкого NGINX веб-сервер (или Apache, если вы предпочитаете).

Затем вы можете либо импортировать другие скрипты в службу, которую вы используете на CherryPy. Это даст вам немного больше возможностей для контроля процесса и обнаружения ошибок, если они произойдут.

Другой вариант - просто сообщить операционной системе, чтобы вызвать команду с помощью os.system(). Проверьте здесь пример различных подходов к использованию os.system().

Ответ 5

Простой cgi script (или набор скриптов) - это все, что вам нужно для начала работы. В других ответах рассказывается, как это сделать, поэтому я не буду повторять это; вместо этого я подчеркиваю, что с использованием простого текста вы получите длинный путь. Просто выведите заголовок (print("Content-type: text/plain\n") plus print добавляет свою собственную новую строку, чтобы дать вам нужную пустую строку), а затем запустите обычную программу.

Таким образом, любой нормальный вывод вашего script отправляется в браузер, и вам не нужно беспокоиться о HTML, экранах, фреймворках и т.д. "Простейшая вещь, которая могла бы работать".

Это особенно подходит для неинтерактивных частных административных задач, как вы описываете, и позволяет вам использовать одинаковые программы из оболочки с минимальным шумом. Ваш драйвер, страница с кнопками, может быть статическим HTML файлом с одноконтактными формами. Или даже список ссылок.

Чтобы перейти оттуда, посмотрите модуль регистрации (например, отправьте сообщения INFO в браузер, но не в командной строке, или легко классифицируйте сообщения с помощью разных регистраторов, настроив свои обработчики), а затем начните рассмотрение шаблона двигатели и каркасы.

Не выводите свой собственный HTML-код и не переходите к использованию одной из многих существующих библиотек - это избавит тонну головной боли, даже потратив немного времени на изучение библиотеки. Или, по крайней мере, инкапсулируйте свой результат, эффективно написав свой собственный мини-движок.

Ответ 6

Если вы знаете свой путь вокруг Apache this, вы должны начать.

Ответ 7

В более раннем вопросе я попросил минимальную реализацию для подключения веб-сайта AJAX к Python. Это может сделать то, что вы ищете. У этого есть кнопка, которая запускает некоторый код Python, а затем показывает результат на странице. Мое решение использует встроенный веб-сервер в Python, поэтому он очень легкий (без дополнительных пакетов или даже Apache).

Ответ 8

При настройке этого, пожалуйста, будьте осторожны, чтобы ограничить доступ к скриптам, которые предпринимают определенные действия на вашем веб-сервере. Недостаточно поместить их в каталог, где вы просто не публикуете URL-адрес, потому что рано или поздно кто-то их найдет.

По крайней мере, поместите эти скрипты в место, защищенное паролем. Вы не хотите, чтобы кто-нибудь в Интернете мог запускать ваши скрипты.

Ответ 9

Если вы используете Python 3, print - это функция, требующая скобок.

#!/Python34/python
print ("Content-type: text/html\n")
print ("<html><head>")
print ("</head><body>")
print ("Hello World from Python Script.")
print ("</body></html>")