HTTP response capturing issue - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: HTTP response capturing issue (/thread-16796.html) |
HTTP response capturing issue - anna - Mar-15-2019 Hi All, below script to download DSLAM configuration, getting "error a bytes-like object is required, not 'str' " tried with encoding, still getting error import os import csv import subprocess import time dslamUser = "admin" dslamPass = "1234" httpresponse = '200 OK' with open('dslams.csv', 'r') as csvfile: x = csv.reader(csvfile, delimiter=',', quotechar='|') for row in x: dslam = list(row) dslamName = dslam[0].strip() dslamAddr = dslam[1].strip() print('Now Trying:{} IP:{}'.format(dslamName,dslamAddr)) print ('Authenticating with DSLAM....') cmdargs = "--auth-no-challenge -t 5 --http-user=" + dslamUser + " --http-password=" + dslamPass + " http://" + dslamAddr + "/config-0_.dat -O /dev/null" data = "" while not ('200 OK') in data: task = subprocess.Popen("wget " + cmdargs, shell=True, stdout=None, stderr=subprocess.PIPE) time.sleep(3) dummy, data = task.communicate() os.system("wget --auth-no-challenge -t 5 --http-user=" + dslamUser + " --http-password=" + dslamPass + " -O '" + dslamName + "_'`date +%Y%m%d%H%M`'.dat' http://" + dslamAddr + "/config-0_.dat") Want to capture HTTP responseHTTP request sent, awaiting response... 200 OK RE: HTTP response capturing issue - Larz60+ - Mar-15-2019 Code is much easier to read if you use f-string (python 3.6 or newer required) import os import csv import subprocess import time dslamUser = "admin" dslamPass = "1234" httpresponse = '200 OK' with open('dslams.csv', 'r') as csvfile: x = csv.reader(csvfile, delimiter=',', quotechar='|') for row in x: dslam = list(row) dslamName = dslam[0].strip() dslamAddr = dslam[1].strip() print(f'Now Trying:{dslamName} IP:{dslamAddr}') print ('Authenticating with DSLAM....') cmdargs = f"--auth-no-challenge -t 5 --http-user={dslamUser} --http-password={dslamPass} " f"http://{dslamAddr}/config-0_.dat -O /dev/null" data = "" while not ('200 OK') in data: task = subprocess.Popen(f"wget {cmdargs}", shell=True, stdout=None, stderr=subprocess.PIPE) time.sleep(3) dummy, data = task.communicate() os.system(f"wget --auth-no-challenge -t 5 --http-user={dslamUser} --http-password={dslamPass} " f"-O '{dslamName}_'`date +%Y%m%d%H%M`'.dat' http://{dslamAddr}/config-0_.dat") RE: HTTP response capturing issue - Larz60+ - Mar-15-2019 rather than using wget, better to use requests. |