#!/usr/bin/python DESCRIPTION='test a list of urls' USAGE=''' usage: checkurl filename1 [filename2] ... files should contain one url or comment per line, example: #official http://www.heise.de ftp://www.de.kernel.org #private https://www.merlinux.de/admin ''' import sys,re,urllib2 def main(): EXIT=0 FILES=get_commands() for FILE in FILES: for url in open(FILE).read().strip().split('\n'): if not url: continue if re.search('^[ ]*#',url): continue try: print "checking", url sys.stdout.flush() urllib2.urlopen(url) except ValueError, e: #for example: sjdhf sdfhdsjf sdjf sys.stderr.write( ' ' + str(e) + '\n' ) sys.stderr.flush() EXIT=1 except (urllib2.URLError, urllib2.HTTPError), e: #for example: http://sdhjflsdhfsdljfhds.gggg #for example: http://www.trillke.net/gggggggg if re.search('Authorization Required', str(e)): pass else: sys.stderr.write( ' ' + str(e) + ' ' + url + '\n' ) sys.stderr.flush() EXIT=1 sys.exit(EXIT) def get_commands(): FILES=[] sys.argv.pop(0) #den ersten eintrag weg, nur die nachfolgenden enthalten optionen while 1: try: arg=sys.argv.pop(0) except IndexError: break if arg == '-h' or arg == '-help' or arg == '--help': print DESCRIPTION print USAGE sys.exit(0) #elif arg == '-limit' or arg == '--limit': #try: #LIMIT=sys.argv.pop(0) #except IndexError: #sys.stderr.write( "WARNING: No limit given\n") else: FILES.append(arg) return FILES if __name__ == "__main__": main()