PowerShell教程

PowerShell 脚本实现登录光猫,并触发重启,解决政企网关长期开机死机导致的不能上网问题

本文主要是介绍PowerShell 脚本实现登录光猫,并触发重启,解决政企网关长期开机死机导致的不能上网问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

问题由来:

中国电信的政企网关,型号MSG2100E-UPON-4V-G,4路千兆网口,4个电话口,1个GPON光口

这个光猫过3周左右就会出现一次不能上网,需要断电重启设备才能解决。

找遍所有后台配置界面,没有找到能设置定时重启的地方,但后台有个手动点击的重启按钮。

方案分析:

外接个智能插座应该可以解决定时重启的问题,可是本着折腾的习惯,尝试找其他方案。鉴于设备后台管理的设备管理页面,有个重启的按钮可以点击,所以只要用程序实现模拟登录,点这个按钮就可以实现重启了,然后把程序放到公司内网服务器上,定时运行下就可以。鉴于Python+selenium已经使用过,开发过一个自动开发票程序,不想再重复。所以选择PowerShell方案。

 
方案 优点 缺点
智能插座

简单粗暴

需要硬件,有成本。

断电时,亦断网,此时无法查看状态或者控制;

插座要能记忆断电前的状态,即插座本身停电再来电要是打开状态。

插座要能够做本地定时,网络定时会存在问题。

Python+selenium

只要人能操作的,代码就能实现。

各个控件搜索定位方便。

操作过程可见。

代码重,有驱动,还要和Chrome版本配套。
PowerShell

代码量很少。

Windows都自带环境。Linux也可实现。

操作过程不可见。要有点web应用基础才好。

PowerShell实现:

 以下内容存为FiberHome.ps1, 然后在PowerShell 5.x环境运行,输入: ./FiberHome.ps1, 回车执行:

echo "Login FiberHome and reset device....."
$LoginBody = @{
    username2='useradmin'
    psd2= ''
    username1= ''
    psd1= ''
    loginSelinit=0
    csrfmiddlewaretoken='Kadfbyj7CD2did7JKadsP1P3qafsdmkPt' #换成你自己的
    username3='telecomadmin'
    psd3='nE7jA%5m'
    username='telecomadmin'
    psd='nE7jA%5m'
}
$LoginResponse = Invoke-WebRequest 'http://192.168.1.1/boaform/admin/formLogin' -SessionVariable 'Session' -Body $LoginBody -Method 'POST'
echo "Login Session----------------------------------------------"
$Session

$ResetBody = @{
    'submit-url' = '/mgm_dev_reboot.asp'    # key name with dash must quoted by '
}
$ResetResponse = Invoke-WebRequest 'http://192.168.1.1/boaform/admin/formReboot' -SessionVariable 'Session' -Body $ResetBody -Method 'POST'
echo "Reset FiberHome device Response------------------------------"
Write-Output "Status Code : $($ResetResponse.StatusCode)"

执行代码的电脑应该和网关在同一个子网,代码中用到的IP如果和你的设置不一致,应改成你的。

这篇关于PowerShell 脚本实现登录光猫,并触发重启,解决政企网关长期开机死机导致的不能上网问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!