从终端中的url运行python脚本

从终端中的url运行python脚本,python,Python,我想知道是否有任何方法可以从终端中的url(www.blahblah.com/script.py)执行python脚本,而无需将文件下载到磁盘 谢谢 您所询问的内容称为CGI。Python有一个模块: 但是CGI现在有点过时了,因为它通常是一种为python应用程序提供服务的非常低效的方法。您最好使用某种类型的 支持CGI的web服务器可以配置为解释URL 它用作CGI脚本的引用。一个共同的惯例是 在目录树的底部有一个cgi bin/目录,并且 将其中的所有可执行文件视为CGI脚本。另一个流

我想知道是否有任何方法可以从终端中的url(www.blahblah.com/script.py)执行python脚本,而无需将文件下载到磁盘


谢谢

您所询问的内容称为CGI。Python有一个模块:

但是CGI现在有点过时了,因为它通常是一种为python应用程序提供服务的非常低效的方法。您最好使用某种类型的

支持CGI的web服务器可以配置为解释URL 它用作CGI脚本的引用。一个共同的惯例是 在目录树的底部有一个cgi bin/目录,并且 将其中的所有可执行文件视为CGI脚本。另一个流行的 惯例是使用文件扩展名;例如,如果CGI脚本 如果始终提供扩展名.cgi,则web服务器可以 配置为将所有此类文件解释为CGI脚本。
就 HTTP PUT或POST,将用户提交的数据提供给程序 通过标准输入。web服务器创建了一个小型且高效的 传递给它的环境变量的子集,并添加详细信息 与程序的执行有关

这如何适用于您的问题是您的
script.py
首先需要位于
cgi-bin
或web服务器配置为识别该类型的类似位置内。其次,您需要使用
cgi
python模块来访问参数(并且符合请求/响应格式)

查看以获取有关在web中使用python的有用信息

这个接口,通常被称为“CGI”,是最古老的,并且 几乎所有现成的web服务器都支持它。程序使用 CGI与他们的web服务器通信需要由 每个请求的服务器。因此,每个请求都会启动一个新的Python 解释器—启动需要一些时间—因此使 整个接口仅适用于低负载情况

CGI的优点在于它很简单——编写Python程序 使用CGI的程序大约需要三行代码。这 简单是要付出代价的:它很少能帮助用户 开发者

编写CGI程序虽然仍然可行,但不再推荐。 使用本文档后面将介绍的主题WSGI,可以 编写模拟CGI的程序,以便在没有CGI的情况下可以作为CGI运行 有更好的选择

有很多方法可以达到CGI的目的,但没有一些缺点

FastCGI和SCGI试图解决CGI的性能问题 另一种方式。而不是将解释器嵌入web服务器, 它们创建长期运行的后台进程。还有一个模块 在web服务器中,使web服务器能够 用后台进程“说话”。由于后台进程是 独立于服务器,可以用任何语言编写, 包括Python。这种语言只需要有一个库 处理与Web服务器的通信

FastCGI和SCGI之间的差异非常小,就像SCGI一样 本质上只是一个“更简单的FastCGI”。作为web服务器支持 SCGI是有限的,大多数人使用FastCGI,其工作原理相同 对。几乎所有适用于SCGI的内容也适用于FastCGI as 那么,我们只讨论后者


您希望在客户端或服务器(将返回结果)上运行此操作吗

如果你想在客户端上运行它,就必须以某种方式下载它。一种简单的方法是下载、运行、删除:

$ wget blahblah.com/script.py && (python script.py; rm script.py)
如果您想在服务器上运行这个,您可以使用其他人提到的CGI。但是,根据您想做什么,您可能希望改用web框架


要获得轻量级框架,请查看。他们的文档非常优秀,我在一天内就完成了一些工作并开始运行(我对Python和web服务器都是新手)。

以下是您需要的:

wget -qO-  https://gist.githubusercontent.com/mattwarrenrnp/6ca5bbeb4959974fb4ac/raw/23196eba76b1f21210f530a05572e38349384e0d/print.py | python -
python <(wget https://bootstrap.pypa.io/get-pip.py -q -O-)
说明:

-q对于安静模式,隐藏错误以避免被解释为python

O-将直接下载到标准输出

使用“-”将标准输出管道传输到python,以告诉它从标准输入执行


警告:始终确保您信任这样运行的脚本。

因为您没有提到终端中的shell类型。我假设您正在使用
/bin/bash
。下面是您要查找的内容:

wget -qO-  https://gist.githubusercontent.com/mattwarrenrnp/6ca5bbeb4959974fb4ac/raw/23196eba76b1f21210f530a05572e38349384e0d/print.py | python -
python <(wget https://bootstrap.pypa.io/get-pip.py -q -O-)

python我知道这是一个非常古老的线程,但我只想说,其他解决方案中没有一个真正适合我们,部分原因是我们需要使用
input()
,而且我们对创建临时文件犹豫不决,因为无法保证脚本不会出错。最后,我们采取了以下措施:

python3 -c "$(wget -q -O - https://host.com/script.py)"

从技术上讲,它将以某种方式下载。无法访问您无法阅读的内容。@TheZ:那不是真的。服务器端执行脚本就是这样做的。在服务器端执行。您将收到的是执行的结果。不是原始文件。@jdi和那个服务器到底在做什么?首先将文件下载到磁盘。@TheZ:OP请求的是执行的python文件的结果,而不是要下载的源文件的内容。我认为你只是误解了。很明显,OP希望收到某种性质的结果。