Browse Source

tool for ping nodes (#153)

CupIvan 3 years ago
parent
commit
b0545875f5
1 changed files with 47 additions and 0 deletions
  1. 47 0
      testAvailable.py

+ 47 - 0
testAvailable.py

@@ -0,0 +1,47 @@
+#!/usr/bin/env python3
+"""Ping nodes and show unavailable."""
+import json
+import os
+import sys
+import subprocess
+
+RED    = '\x1b[01;31m'
+GREEN  = '\x1b[01;32m'
+YELLOW = '\x1b[01;33m'
+END    = '\x1b[0m'
+
+
+def validate(path):
+	"""Test a single set of peering creds."""
+	result = True
+	print("Pinging %s" % path)
+	try:
+		with open(path) as f:
+			for host in json.loads(f.read()):
+				if host[0] == '[': continue
+				ipv4 = host.split(':')[0]
+				res  = subprocess.call(['ping', '-c3', '-W5', ipv4], stdout=subprocess.DEVNULL)
+				if res:
+					print("    %s%s is failed%s" % (RED, ipv4, END))
+					result = False
+				else:
+					print("    %s%s is ok%s" % (GREEN, ipv4, END))
+	except ValueError:
+		print("    %sInvalid JSON!%s" % (RED, END))
+		result = False
+	except KeyboardInterrupt:
+		print("    %sInterrupt%s" % (RED, END))
+		sys.exit(1)
+	return result
+
+if __name__ == "__main__":
+	success = True
+	for directory, subdirs, files in os.walk('.'):
+		if len(files) > 0:
+			if directory != '.' and not directory.startswith('./.git'):
+				for f in files:
+					result = validate("%s/%s" % (directory, f))
+					if not result:
+						success = False
+	if not success:
+		sys.exit(1)