使用python从URL执行bash脚本

时间:2012-03-19 20:18:46

标签: python bash curl

假设我http://mysite.com/myscript.sh的文件包含:

#!/bin/bash
echo "Hello $1"

从命令行,我可以使用以下命令执行我的脚本(不下载):

bash <(curl -s http://mysite.com/myscript.sh) World

现在,我不是从命令行执行上面的命令,而是想从python脚本执行它。我尝试了以下操作:

import os
os.system('bash <(curl -s http://mysite.com/myscript.sh) World')

...但我收到以下错误:

  

sh:-c:第0行:意外令牌附近的语法错误`('

如何在python中正确执行?

2 个答案:

答案 0 :(得分:1)

显然,os.system通过/bin/sh运行命令,这通常会导致链接到的任何shell都降低到不包含<(...)构造的兼容模式。您可以通过将结果存储在临时文件中或使用其他级别的shell来绕过它。丑陋,但它确实有效。

os.system('bash -c "bash <(curl -s http://mysite.com/myscript.sh) World"')

答案 1 :(得分:0)

python有一个libcurl,所以你不必去处理命令行行为。这是应该真正做到的function list - 我自己从未运行过远程脚本。如果需要安装python绑定,说明为here

import curl