2016-11-05 5 views
0

Я написал код python, который делает вызов подпроцесса, который выполняет команду curl, но я получаю сообщение об ошибке Command '['sh', '/tests/curlhttp.sh', 'http://www.bbc.co.uk', '80']' returned non-zero exit status 3 Я также попытался запустить эту команду через терминал на моем linux box, и это, похоже, в порядке. Вот мой питон скриптвозвращает ненулевой статус выхода 3 python2.7 subprocess check_output

def RunCURL(command): 
    result = [] 
    //I get an error when running this 
    output = check_output(command.split(" "), stderr=subprocess.STDOUT) 
    print output 
    # loop through and create a list of lists 
    for line in output.splitlines(): 
     if "=" in line and "time_total" not in line: 
      sublist = line.split("=")[0].rstrip().lstrip() 
      print sublist + " hello this is curl" 
      result.append(sublist) 
    return result 

и вот мой локон сценария Я пытаюсь выполнить:

#!/bin/bash 
curl -w '\ncontent_type=%{content_type}\nfilename_effective=%{filename_effective}\nftp_entry_path=%{ftp_entry_path}\nhttp_code=%{http_code}\nhttp_connect=%{http_connect}\nlocal_ip=%{local_ip}\nlocal_port=%{local_port}\nnum_connects=%{num_connects}\nnum_redirects=%{num_redirects}\nredirect_url=%{redirect_url}\nremote_ip=%{remote_ip}\nremote_port=%{remote_port}\nsize_download=%{size_download}\nsize_header=%{size_header}\nsize_request=%{size_request}\nsize_upload=%{size_upload}\nspeed_download=%{speed_download}\nspeed_upload=%{speed_upload}\nssl_verify_result=%{ssl_verify_result}\ntime_appconnect=%{time_appconnect}\ntime_connect=%{time_connect}\ntime_namelookup=%{time_namelookup}\ntime_pretransfer=%{time_pretransfer}\ntime_redirect=%{time_redirect}\ntime_starttransfer=%{time_starttransfer}\ntime_total=%{time_total}\nurl_effective=%{url_effective}\n\n' -o /dev/null -s $1:$2 

Я взял этот локон сценария из этого блога и только изменил поле адреса по сценарию принять URL и номер порта: http://blog.kenweiner.com/2014/11/http-request-timings-with-curl.html

Это то, что я получаю при запуске локон скрипт, скопированный из самого блога прямо в терминал

content_type=text/html; charset=UTF-8 
filename_effective=/dev/null 
ftp_entry_path= 
http_code=302 
http_connect=000 
local_ip=10.250.8.99 
local_port=60839 
num_connects=1 
num_redirects=0 
redirect_url=https://www.google.co.uk/?gfe_rd=cr&ei=_7gdWOrCLrH38Af1qoKIBw 
remote_ip=216.58.204.36 
remote_port=443 
size_download=262 
size_header=258 
size_request=78 
size_upload=0 
speed_download=3535.000 
speed_upload=0.000 
ssl_verify_result=0 
time_appconnect=0.062 
time_connect=0.013 
time_namelookup=0.001 
time_pretransfer=0.062 
time_redirect=0.000 
time_starttransfer=0.074 
time_total=0.074 
url_effective=https://www.google.com/ 

Когда я поместить этот скрипт в файл я получаю это

content_type= 
filename_effective=/dev/null 
ftp_entry_path= 
http_code=000 
http_connect=000 
local_ip= 
local_port=0 
num_connects=0 
num_redirects=0 
redirect_url= 
remote_ip= 
remote_port=0 
size_download=0 
size_header=0 
size_request=0 
size_upload=0 
speed_download=0.000 
speed_upload=0.000 
ssl_verify_result=0 
time_appconnect=0.000 
time_connect=0.000 
time_namelookup=0.000 
time_pretransfer=0.000 
time_redirect=0.000 
time_starttransfer=0.000 
time_total=0.000 
url_effective=https://www.google.com/ 

ответ

0

Глядя на cUrl error codes это выглядит как 3 означает, что ваш URL является malformatted. Работает ли он, когда вы запускаете его за пределами Python?

+0

Я скопировал и вставил скрипт curl из блога и только что побежал, и это сработало. однако, когда я копирую и вставляю его в файл оболочки, он, похоже, не возвращает мне никакой информации, кроме ярлыков. Я отредактировал свое сообщение, чтобы включить вывод, ожидаемый от результата, который я получаю от скрипта curl, помещенного в файл командой sh – DorkMonstuh

Смежные вопросы