为啥会有这个想法呢?
哈哈,继上次完成“shell和python监视小孩看电视时间并发邮件”后,最近被小孩折磨到不行,晚上下班回家就交接班带娃,要是再熬一下夜(不是想你的夜),基本到下午就耐心体力都跟不上了。于是只能打开电视让她看电视安静会,我也偷闲休息一会。但是,看电视怎么能被下班回家的妈发现呢?
于是乎,实现方法和上一篇文章一下,就是脚本来检测ip在不在线。因为手机一般都是打开wifi的,在路由器附近会自动连接,那么ip就在线了。有些路由器有上限提醒的功能,但是无法语音播报,于是笔者就想用python来完成这个“妈妈回家”播报。
以前都是python调用外部iputils包的ping命令来实现连通性测试,但是笔者发现较慢(不影响使用,笔者只是想换个方式来ping),笔者做过Python构造ICMP协议实现网络ping方法 ,于是在其基础上笔者稍微修改了一下main部分的代码就可以实现了,有基础有经验就是好。
第二个就是python来完成语音播报,以前笔者做过操作windows的语音speech api来完成文本转语音的功能。python的话估计早就造好了轮子,搜索一番pyttsx3就可以简单实现,复杂的功能,比如语速、语调等等,笔者就不测试了。
main部分的代码如下,最重要的就是标记变量ip_on_line ,在0转为1使即判断为上线了,需要语音播报。
代码托管在:python/mama_home.py at main · laufei90/python (github.com)
笔者听说有些手机在息屏后使ping不通的,有些手机不支持ping, 在实际测试中暂时没有遇到。但是现在路由器是双模(2.4G+5G),那么连接到不同的频段,IP地址就会不一样,但是现在场景是远距离,那么ip地址应该首选2.4G的IP地址。或者在main代码里面直接ping两个IP地址,通过逻辑或来判断。
测试一下,嘿嘿,真有意思。路由器的位置很重要哦。作为一个工程师,那么这个功能就可以直接挪到设备监控上面来,python实现快速ping,再结合多线程,可以适用内大量主机的连同性测试。
网友评论