Ap-Reboot脚本

Zss 发表于:

当初遇到一个问题是a8n – ap在多次频繁的重启可能会导致出现以太口信息的丢失导致无法上线AC,偶尔会遇到这个问题,

平常其他的同事也遇到过类似的问题,但是一直没法复现,在实际的测试环境下我们也不可能总是去给ap重启,

手动重启来复现这个问题是不现实的,所以写了这个定时重启ap的脚本,终于在不久给开发的复现了

 

实现的方式很简单就是通过自动化工具selenium来实现重启的,或者使用直接向接口提交数据的方式,或者使用ssh更方便一点,但是介于用户的实际操作情况下,

当然还是通过web的操作来实现,所以需要一个webdriver的驱动,使用的无头浏览器phantomjs,附上驱动一个,有时候特地去找还难得找

点我下载: phantomjs

#coding:gbk
from selenium import webdriver
import time

def reboot_ap(ap_list):
    for ap_url in ap_list:
        print('时间:{}    正在重启AP为:{}'.format(str(time.ctime()),str(ap_url)))
        web = webdriver.PhantomJS()
        ap_url = 'http://{}'.format(str(ap_url))
        web.get(ap_url)
        web.implicitly_wait(30)
        web.find_element_by_xpath('//*[@id="cbi-input-user"]').send_keys('admin')
        web.find_element_by_xpath('//*[@id="cbi-input-password"]').send_keys('admin')
        web.find_element_by_xpath('//*[@id="cbi-home-button-login"]').click()
        web.find_element_by_css_selector('#rightinfo > p:nth-child(1) > a:nth-child(2)').click()
        web.find_element_by_css_selector('#maincontent > p:nth-child(5) > a').click()
        web.close()
        print('时间:{}    AP:{}   已重启'.format(str(time.ctime()),str(ap_url[7:])))


def input_ap():
    ap_list = []
    print('--------   可以重启多个ap,输入0开始重启   -----')
    while 1:
        ap_url = raw_input('请输入AP的ip地址 --- 格式:10.6.161.X  或者  192.168.99.X --- 输入0结束\n')
        if ap_url =='0':
            break
        else:
            ap_list.append(ap_url)
    print('您需要重启的AP如下:')
    for i in ap_list:
        print(i)
    return ap_list


if __name__=='__main__':
    print('-------------------------------------------')
    print('请输入重启次数,例如:1000次,输入1000')
    number = int(input())
    print('请输入重启间隔时间,例如:500秒,输入500')
    reboot_time = input()
    print('AP的重启间隔时间为:{}秒,   AP的重启次数为:{}次'.format(str(reboot_time),str(number)))
    print('-------------------------------------------')
    ap_list = input_ap()
    index = 0
    while number != 0:
        number -= 1
        index += 1
        print('----->    ----->    ----->    ----->    ----->')
        print('正在进行第%d次重启'%(index))
        reboot_ap(ap_list)
        print('等待{}秒后再次重启,请稍后...'.format(str(reboot_time)))
        reboot_time = int(reboot_time)
        print('-----------------------------------------------')
        time.sleep(reboot_time)
    raw_input('输入回车结束')

试了试用roboot中的ssh库直接下发命令来给ap重启

*** Settings ***
Library           SSHLibrary

*** Test Cases ***
reboot
    : FOR    ${t}    INRANGE    3000
    \    Open Connection    192.168.99.166
    \    Login    root    superwifi123
    \    Write    reboot
    \    ${s}    read    delay=0.5s
    \    log    ${s}
    \    sleep    300