45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
"""Verify URLs return valid HTTP responses."""
|
|
import sys
|
|
import urllib.request
|
|
import urllib.error
|
|
from datetime import datetime
|
|
|
|
def check_url(url, timeout=10):
|
|
"""Check if URL is accessible, return (status_code, error_msg)."""
|
|
try:
|
|
req = urllib.request.Request(url, method='HEAD')
|
|
with urllib.request.urlopen(req, timeout=timeout) as resp:
|
|
return resp.status, None
|
|
except urllib.error.HTTPError as e:
|
|
return e.code, str(e)
|
|
except urllib.error.URLError as e:
|
|
return None, str(e.reason)
|
|
except Exception as e:
|
|
return None, str(e)
|
|
|
|
def main():
|
|
urls = sys.argv[1:] if len(sys.argv) > 1 else [
|
|
'https://httpbin.org/status/200',
|
|
'https://httpbin.org/status/404',
|
|
'https://httpbin.org/status/500',
|
|
]
|
|
|
|
results = []
|
|
for url in urls:
|
|
status, error = check_url(url)
|
|
timestamp = datetime.utcnow().isoformat()
|
|
result = {'url': url, 'status': status, 'error': error, 'timestamp': timestamp}
|
|
results.append(result)
|
|
print(f"{status or 'FAIL'}: {url}")
|
|
|
|
# Export results
|
|
output_path = '/root/.hermes/wizard-outputs/spark/url_results.json'
|
|
import json
|
|
with open(output_path, 'w') as f:
|
|
json.dump(results, f, indent=2)
|
|
print(f"\nResults written to: {output_path}")
|
|
return 0 if results[0]['status'] == 200 else 1
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main()) |