123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- #!/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)
|