打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Selenium初探之自动备份设备配置文件及上传
#coding=utf-8
import os
import time
import logging
import ftplib
from ftplib import FTP
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys importKeys
from selenium.webdriver.support.ui import Select
from selenium.webdriver importDesiredCapabilities
from selenium.webdriver.chrome.optionsimport Options
Device = 'WAF'     #定义设备类型
IP = 'x.x.x.x'         #目标IP
dir_time = time.strftime('%Y-%m-%d',time.localtime())
#输出当前"年-月-日"时间
dir_backup =f'/opt/sec_backup/{IP}_{Device}/{dir_time}'
#chrome下载的地址备份文件的路径
log_name =f'/opt/sec_backup/log/{IP}/{dir_time}.log'
#存放日志文件的路径
if os.path.exists(dir_backup):
pass
else:
os.mkdir(f'/opt/sec_backup/{IP}_{Device}/{dir_time}')
#创建dir_backup路径
host = 'X.X.X.X'
port = 21
user = 'XXXX'
pwd = 'XXXXX'
#以上定义FTP服务器相关信息
logging.basicConfig(filename=log_name,level=logging.INFO,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
#定义日志输出格式
try:
opts = Options()
opts.headless=True
opts.add_argument('--no-sandbox')
opts.add_argument('--disable-gpu')
capabilities = DesiredCapabilities.CHROME.copy()
capabilities['acceptSslCerts'] = True
capabilities['acceptInsecureCerts'] = True
prefs = {'download.prompt_for_download': False,
'download.directory_upgrade': True,
'safebrowsing.enabled': False,
'safebrowsing.disable_download_protection': True}
opts.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(options=opts,desired_capabilities=capabilities)
#以上是“无头”的一些配置,具体就不一一展开
driver.implicitly_wait(10)
#设置超时时间10秒钟
driver.command_executor._commands["send_command"] =("POST",'/session/$sessionId/chromium/send_command')
driver.desired_capabilities['browserName'] = 'ur mum'
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior':'allow', 'downloadPath': '%s' %dir_backup }}
driver.execute("send_command", params)
#Chrome下载备份文件到dir_backup目录
driver.get(f"https://{IP}/login/requireLogin")
driver.find_element_by_id("username").send_keys("xxx")
driver.find_element_by_id("password").send_keys("xxx")
driver.find_element_by_id("loginButton").click()
driver.find_element_by_id("one3").click()
driver.find_element_by_id("two32").click()
driver.switch_to.frame("mainFrame")
driver.find_element_by_link_text("配置同步").click()
driver.find_element_by_xpath("(//input[@id='tmp'])[2]").click()
time.sleep(30)
driver.switch_to.alert.accept()
driver.find_element_by_xpath("//*[@id='backpointtable']/tbody/tr[2]/td[5]/img[3]").click()
while True:
if os.listdir(dir_backup) andos.listdir(dir_backup)[0].endswith('.wafc'):
#备份周期是天,一天只生成一个固定目录,里面只有一个备份文件,故判断是否有文件即可
logger.info('备份成功')
break
else:
continue
driver.find_element_by_link_text("配置同步").click()
driver.find_element_by_xpath("//*[@id='backpointtable']/tbody/tr[2]/td[5]/img[4]").click()
confirm2 = driver.switch_to.alert
confirm2.accept()
driver.quit()
#logger.info('删除旧备份成功')
except Exception as e:
logger.info(f"自动备份出现异常,异常内容:{e}")
def ftpconnect():
ftp_server = host
username = user
password = pwd
ftp = FTP()
ftp.set_debuglevel(0)
ftp.connect(ftp_server, 21)
ftp.login(username, password)
return ftp
def uploadfile():
try:
ftp = ftpconnect()
remotepath = ftp.mkd(f'/{IP}-{Device}/{dir_time}')
except:
pass
ftp.cwd(remotepath)
bufsize = 1024
localfile = dir_backup + '/' + os.listdir(dir_backup)[0]
remotefile = os.listdir(dir_backup)[0]
print(localfile)
fp = open(localfile, 'rb')
ftp.storbinary('STOR ' + remotefile, fp, bufsize)
#上传本地localfile,至remotepath,并命名remotefile
ftp.set_debuglevel(0)
#关闭ftp的调试模式,如果设置为2,则输出详细信息
fp.close()
if __name__ == '__main__':
try:
uploadfile()
except Exception as e:
logger.info(f"文件上传出现异常,异常内容:{e}")
else:
logger.info('文件上传成功')
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
selenium2
selenium webdriver(python篇)(十一)
python+selenium+chrome实现自动登录百度
《selenium2 python 自动化测试实战》(4)——鼠标事件
Selenium WebDriver 环境搭建和错误调试_chromedriver_win32必须下载否则无法测试chrome
滑动验证码破解:Python Selenium 2.0 应用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服