#!/usr/bin/env python2 # # Show/check devices # Copyright (c) 2016, Tieto Corporation # # This software may be distributed under the terms of the BSD license. # See README for more details. import time import traceback import config import os import sys import getopt import re import logging logger = logging.getLogger() import rutils from remotehost import Host from wpasupplicant import WpaSupplicant import hostapd def show_devices(devices, setup_params): """Show/check available devices""" print "Devices:" for device in devices: host = rutils.get_host(devices, device['name']) # simple check if authorized_keys works correctly status, buf = host.execute(["id"]) if status != 0: print "[" + host.name + "] - ssh communication: FAILED" continue else: print "[" + host.name + "] - ssh communication: OK" # check setup_hw works correctly rutils.setup_hw_host(host, setup_params) # show uname status, buf = host.execute(["uname", "-s", "-n", "-r", "-m", "-o"]) print "\t" + buf # show ifconfig ifaces = re.split('; | |, ', host.ifname) for iface in ifaces: status, buf = host.execute(["ifconfig", iface]) if status != 0: print "\t" + iface + " failed\n" continue lines = buf.splitlines() for line in lines: print "\t" + line # check hostapd, wpa_supplicant, iperf exist status, buf = host.execute([setup_params['wpa_supplicant'], "-v"]) if status != 0: print "\t" + setup_params['wpa_supplicant'] + " not find\n" continue lines = buf.splitlines() for line in lines: print "\t" + line print "" status, buf = host.execute([setup_params['hostapd'], "-v"]) if status != 1: print "\t" + setup_params['hostapd'] + " not find\n" continue lines = buf.splitlines() for line in lines: print "\t" + line print "" status, buf = host.execute([setup_params['iperf'], "-v"]) if status != 0 and status != 1: print "\t" + setup_params['iperf'] + " not find\n" continue lines = buf.splitlines() for line in lines: print "\t" + line print "" def check_device(devices, setup_params, dev_name, monitor=False): host = rutils.get_host(devices, dev_name) # simple check if authorized_keys works correctly status, buf = host.execute(["id"]) if status != 0: raise Exception(dev_name + " - ssh communication FAILED: " + buf) rutils.setup_hw_host(host, setup_params) ifaces = re.split('; | |, ', host.ifname) # check interfaces (multi for monitor) for iface in ifaces: status, buf = host.execute(["ifconfig", iface]) if status != 0: raise Exception(dev_name + " ifconfig " + iface + " failed: " + buf) # monitor doesn't need wpa_supplicant/hostapd ... if monitor == True: return status, buf = host.execute(["ls", "-l", setup_params['wpa_supplicant']]) if status != 0: raise Exception(dev_name + " - wpa_supplicant: " + buf) status, buf = host.execute(["ls", "-l", setup_params['hostapd']]) if status != 0: raise Exception(dev_name + " - hostapd: " + buf) status, buf = host.execute(["which", setup_params['iperf']]) if status != 0: raise Exception(dev_name + " - iperf: " + buf) status, buf = host.execute(["which", "tshark"]) if status != 0: logger.debug(dev_name + " - tshark: " + buf) def check_devices(devices, setup_params, refs, duts, monitors): """Check duts/refs/monitors devices""" for dut in duts: check_device(devices, setup_params, dut) for ref in refs: check_device(devices, setup_params, ref) for monitor in monitors: if monitor == "all": continue check_device(devices, setup_params, monitor, monitor=True)