2016-04-29 07:07:33 +02:00
|
|
|
#!/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()
|
|
|
|
|
2016-04-29 07:07:35 +02:00
|
|
|
import rutils
|
2016-04-29 07:07:33 +02:00
|
|
|
from remotehost import Host
|
|
|
|
from wpasupplicant import WpaSupplicant
|
|
|
|
import hostapd
|
|
|
|
|
|
|
|
def show_devices(devices, setup_params):
|
|
|
|
"""Show/check available devices"""
|
2019-01-24 08:45:42 +01:00
|
|
|
print("Devices:")
|
2016-04-29 07:07:33 +02:00
|
|
|
for device in devices:
|
2016-04-29 07:07:35 +02:00
|
|
|
host = rutils.get_host(devices, device['name'])
|
2016-04-29 07:07:33 +02:00
|
|
|
# simple check if authorized_keys works correctly
|
|
|
|
status, buf = host.execute(["id"])
|
|
|
|
if status != 0:
|
2019-01-24 08:45:42 +01:00
|
|
|
print("[" + host.name + "] - ssh communication: FAILED")
|
2016-04-29 07:07:33 +02:00
|
|
|
continue
|
|
|
|
else:
|
2019-01-24 08:45:42 +01:00
|
|
|
print("[" + host.name + "] - ssh communication: OK")
|
2016-04-29 07:07:33 +02:00
|
|
|
# check setup_hw works correctly
|
2016-05-19 15:06:50 +02:00
|
|
|
rutils.setup_hw_host(host, setup_params)
|
|
|
|
|
2016-04-29 07:07:33 +02:00
|
|
|
# show uname
|
|
|
|
status, buf = host.execute(["uname", "-s", "-n", "-r", "-m", "-o"])
|
2019-01-24 08:45:42 +01:00
|
|
|
print("\t" + buf)
|
2016-04-29 07:07:33 +02:00
|
|
|
# show ifconfig
|
2016-05-19 15:06:50 +02:00
|
|
|
ifaces = re.split('; | |, ', host.ifname)
|
|
|
|
for iface in ifaces:
|
|
|
|
status, buf = host.execute(["ifconfig", iface])
|
|
|
|
if status != 0:
|
2019-01-24 08:45:42 +01:00
|
|
|
print("\t" + iface + " failed\n")
|
2016-05-19 15:06:50 +02:00
|
|
|
continue
|
|
|
|
lines = buf.splitlines()
|
|
|
|
for line in lines:
|
2019-01-24 08:45:42 +01:00
|
|
|
print("\t" + line)
|
2016-04-29 07:07:33 +02:00
|
|
|
# check hostapd, wpa_supplicant, iperf exist
|
|
|
|
status, buf = host.execute([setup_params['wpa_supplicant'], "-v"])
|
|
|
|
if status != 0:
|
2019-01-24 08:45:42 +01:00
|
|
|
print("\t" + setup_params['wpa_supplicant'] + " not find\n")
|
2016-04-29 07:07:33 +02:00
|
|
|
continue
|
|
|
|
lines = buf.splitlines()
|
|
|
|
for line in lines:
|
2019-01-24 08:45:42 +01:00
|
|
|
print("\t" + line)
|
|
|
|
print("")
|
2016-04-29 07:07:33 +02:00
|
|
|
status, buf = host.execute([setup_params['hostapd'], "-v"])
|
|
|
|
if status != 1:
|
2019-01-24 08:45:42 +01:00
|
|
|
print("\t" + setup_params['hostapd'] + " not find\n")
|
2016-04-29 07:07:33 +02:00
|
|
|
continue
|
|
|
|
lines = buf.splitlines()
|
|
|
|
for line in lines:
|
2019-01-24 08:45:42 +01:00
|
|
|
print("\t" + line)
|
|
|
|
print("")
|
2016-04-29 07:07:33 +02:00
|
|
|
status, buf = host.execute([setup_params['iperf'], "-v"])
|
|
|
|
if status != 0 and status != 1:
|
2019-01-24 08:45:42 +01:00
|
|
|
print("\t" + setup_params['iperf'] + " not find\n")
|
2016-04-29 07:07:33 +02:00
|
|
|
continue
|
|
|
|
lines = buf.splitlines()
|
|
|
|
for line in lines:
|
2019-01-24 08:45:42 +01:00
|
|
|
print("\t" + line)
|
|
|
|
print("")
|
2016-04-29 07:07:33 +02:00
|
|
|
|
|
|
|
def check_device(devices, setup_params, dev_name, monitor=False):
|
2016-04-29 07:07:35 +02:00
|
|
|
host = rutils.get_host(devices, dev_name)
|
2016-04-29 07:07:33 +02:00
|
|
|
# simple check if authorized_keys works correctly
|
|
|
|
status, buf = host.execute(["id"])
|
|
|
|
if status != 0:
|
|
|
|
raise Exception(dev_name + " - ssh communication FAILED: " + buf)
|
|
|
|
|
2016-05-19 15:06:50 +02:00
|
|
|
rutils.setup_hw_host(host, setup_params)
|
2016-04-29 07:07:33 +02:00
|
|
|
|
2016-05-19 15:06:50 +02:00
|
|
|
ifaces = re.split('; | |, ', host.ifname)
|
2016-04-29 07:07:33 +02:00
|
|
|
# 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:
|
2016-05-19 15:06:46 +02:00
|
|
|
raise Exception(dev_name + " - iperf: " + buf)
|
2016-04-29 07:07:33 +02:00
|
|
|
|
|
|
|
status, buf = host.execute(["which", "tshark"])
|
|
|
|
if status != 0:
|
2016-05-19 15:06:46 +02:00
|
|
|
logger.debug(dev_name + " - tshark: " + buf)
|
2016-04-29 07:07:33 +02:00
|
|
|
|
|
|
|
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)
|