This quite simple python script can be used to test http response code for given url. Had quite a bit of different random bash scripts that needed this kind of simple but somewhat configurable version of response checking. Might have been able to do this with wget/lynx/etc, but in this case it just seemed faster to write this from a scratch than to check which command line tool would already provide enough those features I finally made here.
#!/usr/bin/env python import sys, os, getopt, urllib, urllib2 if __name__ == '__main__': ok_codes = '200,301,302,304' error_codes = '400,403,500,501,502,503,504,505' def usage(): print print 'Check http response code.' print print 'Usage:' print ' [options] ' print print 'Options:' print ' -k, --ok= comma separated ok codes (default: %s)' % (ok_codes) print ' -e, --error= comma separated failure codes (default: %s)' % (error_codes) print ' -h, --help print help' print print 'Return value is set to 0 if code is not in ok or error list.' print 'It is set to 1 when in ok list and to -1 when in error list.' print '-2 will be returned in case of errors (networking etc).' print 'Also, the return value will be printed to stdout.' print print 'Examples:' print ' -k 200,301 http://somewhere.com' print ' return value is 1 when reponse is 200 or 301, otherwise 0' print ' -e 500,502,503 http://somewhere.com' print ' return value is -1 when reponse is 500, 502 or 503, otherwise 0' print ' -e 404 -k 200 http://somewhere.com' print ' return value is -1 when reponse is 404, 1 when 200, otherwise 0' print try: opts, argv = getopt.gnu_getopt(sys.argv[1:], 'hk:e:', [ 'help', 'ok=', 'error=', ]) except getopt.GetoptError, err: usage() sys.exit(1) for o, a in opts: if o in ('-h', '--help'): usage() sys.exit(0) elif o in ('-k', '--ok'): ok_codes = a elif o in ('-e', '--error'): error_codes = a if len(argv) != 1: usage() sys.exit(1) url = argv[0] _ok_codes = ok_codes.split(',') _error_codes = error_codes.split(',') ok_codes = [] error_codes = [] try: for code in _ok_codes: if int(code) < 100: raise Exception('') ok_codes.append(int(code)) for code in _error_codes: if int(code) < 100: raise Exception('') error_codes.append(int(code)) except: sys.stderr.write('invalid code: %s\n' % (code)) sys.exit(-2) code = 0 try: req = urllib2.urlopen(url) code = req.getcode() except urllib2.HTTPError as e: code = e.code except urllib2.URLError as e: sys.stderr.write('invalid url, reason: %s\n' % (e.reason)) sys.exit(-2) except: sys.stderr.write('something failed, probably network\n') sys.exit(-2) if int(code) in error_codes: print -1, code sys.exit(-1) if int(code) in ok_codes: print 1, code sys.exit(1) print 0, code sys.exit(0)