Выполнить bash-скрипт из URL используя python - PullRequest
0 голосов
/ 20 марта 2012

Предположим, у меня есть файл на 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 ]

1 голос
/ 20 марта 2012

Очевидно, os.system запускает свою команду через /bin/sh, что обычно приводит к тому, что любая оболочка, с которой она связана, переключается в режим совместимости, который не включает конструкцию <(...).Вы можете обойти это, сохраняя результат во временном файле или используя другой уровень оболочки.Ужасно, но это работает.

os.system('bash -c "bash <(curl -s http://mysite.com/myscript.sh) World"')
0 голосов
/ 20 марта 2012

Существует библиотека libcurl для python, поэтому вам не нужно переходить к поведению командной строки.Вот список функций , который действительно должен это делать - хотя сам никогда не запускал удаленные сценарии.Если вам нужно установить привязку Python, инструкции здесь .

import curl
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...