#!/bin/env python """Testlet to check that can ssh to each subordinate node of the cluster.""" import os import time import test_utils as util name = 'Test of compute-node accessibility via ssh' def test(logfile): result = True (cluster, domain) = util.get_hostname() # get python to run python_env_var = os.getenv('PYTHON') # get cluster-specific information cluster_dict = util.get_cluster_info(cluster) if cluster_dict is None: util.log_print_nl(logfile, 'Sorry, you must be on one of these clusters:') for name in Cluster_Info: util.log_print_nl(logfile, '\t%s' % name) util.log_print_nl(logfile, 'You are on the %s machine.' % cluster) return False # get max width of the compute node names width = len(cluster_dict['node_stem']) + len(str(cluster_dict['num_nodes'])) # get list of non-bad nodes test_nodes = util.get_node_numbers(cluster, strip_bad_nodes=True) # test each node for node_num in test_nodes: node_name = cluster_dict['node_stem'] % node_num util.log_print(logfile, "Testing: %s" % node_name.ljust(width+2)) (_, fd) = os.popen4('ssh %s exit' % node_name) data = fd.read() status = fd.close() #if status is None: if len(data) == 0: util.log_print_nl(logfile, 'OK') else: util.log_print(logfile, data) result = False return result if __name__ == '__main__': import sys logfile = 'test.log' if len(sys.argv) > 1: logfile = sys.argv[1] try: os.remove(logfile) except: pass if not test(logfile): sys.exit(10) sys.exit(0)