Python wssh+selenium
wssh(webssh库)---- web页面的ssh工具
cmd 直接运行“wssh” 启动;web访问地址:127.0.0.1:8888
selenium + wssh //实现自动化输入命令,此方法可结果命令需要截图的问题,但非交互界面无法以文本的形式获取命令执行返回结果。适合需要截图留证的地方使用。
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
options = Options()
options.add_argument('--headless') #可设置隐藏,在driver=webdriver.Firefox()的options参数应用
service=Service('geckodriver.exe') #驱动路径,在driver=webdriver.Firefox()的service参数英语
driver = webdriver.Firefox() #根据自身环境填写service参数和options参数
driver.maximize_window() #最大化界面
driver.get('http://127.0.0.1:8888') #访问提前运行好的wssh工具
time.sleep(2) #等待页面加载
WebDriverWait(driver,30).until(EC.presence_of_element_located((By.XPATH,'//*[@id="connect"]/button[1]'))) #等待元素加载
driver.find_element(By.XPATH,'//*[@id="hostname"]').send_keys(Keys.CONTROL+'a')#ctrl+a全选
driver.find_element(By.XPATH,'//*[@id="hostname"]').send_keys('192.168.100.100') #填写ip
driver.find_element(By.XPATH,'//*[@id="username"]').send_keys(Keys.CONTROL+'a')
driver.find_element(By.XPATH,'//*[@id="username"]').send_keys('admin')
driver.find_element(By.XPATH,'//*[@id="password"]').send_keys(Keys.CONTROL+'a')
driver.find_element(By.XPATH,'//*[@id="password"]').send_keys('123@admin')
driver.find_element(By.XPATH,'//*[@id="connect"]/button[1]').click() #开始连接
time.sleep(3) #等待连接成功,填写一个可正常连接的时间
try: #连接成功即会出现canvas元素,连接失败则无法找到canvas元素。
canvas = driver.find_element(By.XPATH,'//*[@id="terminal"]/div/div[2]/canvas[4]')
except:
print('连接失败')
else:
actions = ActionChains(driver) # 创建ActionChains对象
actions.move_to_element(canvas) # 将鼠标移动到元素上
actions.send_keys('dis ip int br\n')
actions.perform() # 执行鼠标动作链
time.sleep(2) #等待命令执行结果
canvas.screenshot("1.png") #截图
driver.quit() #退出浏览器