Initial Commit
This commit is contained in:
Executable
+24
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Connectivity probe, run as the sandbox uid by tests/vm_host_asserts.sh.
|
||||
|
||||
Prints one `target VERDICT` line per argument. Deliberately dumb: it makes
|
||||
a TCP connection and reports whether it completed. A blocked address looks
|
||||
the same as an unreachable one from in here, which is why the caller pairs
|
||||
every must-fail target with a must-pass positive control - without those,
|
||||
a suite like this passes just as happily when networking is simply broken.
|
||||
"""
|
||||
import socket
|
||||
import sys
|
||||
|
||||
|
||||
def probe(host: str, port: int, timeout: float = 4.0) -> str:
|
||||
try:
|
||||
socket.create_connection((host, port), timeout).close()
|
||||
return "REACHED"
|
||||
except Exception as exc:
|
||||
return f"blocked({type(exc).__name__})"
|
||||
|
||||
|
||||
for spec in sys.argv[1:]:
|
||||
host, _, port = spec.rpartition(":")
|
||||
print(f"{spec} {probe(host, int(port))}", flush=True)
|
||||
Reference in New Issue
Block a user