问题背景:
公司有个业务是从成都机房专线到上海机房,10年没出过问题,前天晚上8点左右突然断线,而且因为是运营商专线,主要是白天的业务,晚上也没人值班,还好有个技术晚上接到电话,上海那边有问题要远程协助,没有上海那边的远程连接,只能从成都机房跳过去,才发现问题.
于是想到了要做个这条专线的监控,而且一般是晚上报警,白天都在用业务,出问题都知道.
技术方案:
1.做个Ping脚本,每半小时ping一次,把ping的时间和结果报错到一个文本里
2.每天早上6点,晚上19点,21点,23点将文本里的结果发到钉钉运维群
遇到的问题:
运行的环境是windows server2008r2,任务计划需要用Bat脚本去执行python脚本一直执行失败,
单独运行python脚本会出现"[WinError 10013]以一种访问权限不允许的方式做了一个访问套接字的尝试"
python脚本报错是因为权限问题,百度上全部都是说端口问题,因为我的脚本也是抄的别人的,所以检查了半天,最后想到权限问题.
处理方式:
做Bat调用python脚本时, bat用管理员权限执行,这附知乎大佬Scruel的现成脚本
%1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c ""%~s0"" ::","","runas",1)(window.close)&&exit
作者:Scruel
链接:https://www.zhihu.com/question/34541107/answer/243592603
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
将这行代码放在bat脚本最上面就行.
简单说下我的方案,一共三个脚本:
1.ping.bat(任务计划调用ping.py)
2.ping.py(ping远端路由器端口并报错结果在txt文本)
3.call_dingding_robot.py(将txt文本内容发到钉钉运维群)
其实第二个和第三个脚本可以合成一个,但是我的实际应用场景时第二个脚本需要短时间间隔执行,第三个脚本只需要几个定点执行,分开比较灵活,而且也容易扩展到其他应用场景