Untitled
unknown
plain_text
a year ago
2.0 kB
35
Indexable
import sys
import json
import subprocess
def scan_ports(ip_address):
command = ['/home/user/mybinary', '-host', ip_address, '-j', 'json']
try:
print(f"Running command: {' '.join(command)}") # Log the command being run
# Run the command and capture the output with a timeout
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, timeout=120)
# Log stdout and stderr for debugging
stdout = result.stdout
stderr = result.stderr
print(f"Command stdout: {stdout}")
print(f"Command stderr: {stderr}")
if result.returncode != 0:
return json.dumps({"output": [{"type": "error", "value": f"Error running n: {stderr.strip()}"}]}, indent=2)
output_lines = stdout.splitlines()
output = []
for line in output_lines:
try:
scan_data = json.loads(line)
if isinstance(scan_data, dict) and 'port' in scan_data and scan_data['port'] > 0:
output.append({
"type": "port",
"value": f"{ip_address}:{scan_data['port']}"
})
except json.JSONDecodeError:
continue
return json.dumps({"output": output}, indent=2)
except subprocess.TimeoutExpired:
return json.dumps({"output": [{"type": "error", "value": "Command timed out"}]}, indent=2)
except Exception as e:
return json.dumps({"output": [{"type": "error", "value": f"Unexpected error occurred: {e}"}]}, indent=2)
def main():
# Check if the IP address argument is provided
if len(sys.argv) != 2:
print("Usage: python script.py <IP_ADDRESS>")
sys.exit(1)
ip_address = sys.argv[1].strip()
# Perform the port scan and print the result
result = scan_ports(ip_address)
print(result)
if __name__ == "__main__":
main()Editor is loading...
Leave a Comment