热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

实用小工具之网络小闹钟

深圳这两天在下雷暴雨,一个星期不到,脆弱的长城宽带的交换机已经连续被雷劈坏了两回了。今天上午一打开电脑,发现没法上网。查了下路由器

  深圳这两天在下雷暴雨,一个星期不到,脆弱的长城宽带的交换机已经连续被雷劈坏了两回了。今天上午一打开电脑,发现没法上网。查了下路由器,发现提示WAN口未连接。简单的排除了下故障,发现很有可能是长城宽带的交换机又被雷劈了。

  又没法上网!无奈之下,只好去看书了。但一想,要是网络通了,我咋知道啊?挠了下脑袋,嘿嘿,咱可是程序员啊!用C#写个小程序,自动报警?费劲啊,噼里啪啦的得打开VS,中规中矩的敲一堆无用代码,编译,生成程序。。。No no no!咱怕麻烦,是懒人,嘿嘿,PowerShell上场吧!简单高效,能完成我的任务就行。简述下我的需求:网络正常后,需要让我知道!实现思路:ping一个网络上的远程主机,检测返回结果。若是可以到达,则播放录音文件通知我,否则,每隔一段时间间,继续尝试,直到用户手动停止执行或者网络正常为止。以下是简单实现, 

<#

 General description    

  This script is used to give a sound alarm when the network is repaired.  

 History    

  V1.0 stupidyzd 05252013 First draft

#>

cls

$ErrorActionPreference &#61; "stop"

 

# constants

$Global:playerPath &#61; "C:\&#96;"Program Files (x86)&#96;"\Baofeng\StormPlayer\StormPlayer.exe"

$Global:alarmAudioFileName &#61; "D:\Scripts\NetworkIsOK.wma"

$Global:remoteHost &#61; "www.baidu.com"

$Global:interval &#61; 10

 

# function definition area

function ShowMessage([string] $msgText)

{    

  $currentDateTimeString &#61; Get-Date -Format g    

   if($msgText.ToLower().IndexOf("error:") -ge 0)    

  {        

    Write-Host "$currentDateTimeString  $msgText"

       QuitPS

   }

    else

    {        

    Write-Host "$currentDateTimeString  $msgText"    

   }

}

function QuitPS()

{

    Exit

}

function PlayAudio([string] $audioFileName)

{    

  $playAudioCommand &#61; "$playerPath $audioFileName"    

  Invoke-Expression -Command $playAudioCommand

}

function CheckNetwork()

{    

   $cmd &#61; "ping $remoteHost"

     $networkOK &#61; $false    

  do    

  {

        ShowMessage "INFO: Trying to reach $remoteHost..."

        $commandResult &#61; &#64;(Invoke-Expression -Command $cmd) | ForEach-Object{

         if($_.IndexOf("TTL&#61;") -ge 0)

            {

                $networkOK &#61; $true

                break     

          }  

       }    

         Start-Sleep -Seconds $interval

    }while(-not $networkOK)

 

    while($true)  

   {   

      ShowMessage "INFO: Network is OK now!"

      PlayAudio -audioFileName $Global:alarmAudioFileName

      Start-Sleep -Seconds $interval   

  }

}

# main procedures

CheckNetwork

由于只是信手瞎写的一个小脚本&#xff0c;所以不是很规范&#xff0c;请同行不要见笑。下面就这个小脚本简单说两句。我主要是准备了一个自己的音频文件&#xff0c;并且借用了暴风影音来播放这个通知录音。脚本可以在Win8下面顺利执行(关于怎么去执行这个小脚本&#xff0c;后续博文会有提及这方面的知识)。下午2:14网络就通了。我顺利收到了消息 :)该博客也就由此而生了&#xff0c;以下是实图&#xff0c;

 

转:https://www.cnblogs.com/stupidyzd/archive/2013/05/27/ps1alarm.html



推荐阅读
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 本文详细介绍了虚拟专用网(Virtual Private Network, VPN)的概念及其通过公共网络(如互联网)构建临时且安全连接的技术特点。文章探讨了不同类型的隧道协议,包括第二层和第三层隧道协议,并提供了针对IPSec、GRE以及MPLS VPN的具体配置指导。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 本文介绍如何在华为CE交换机上配置M-LAG(多链路聚合组),以实现CE1和CE2设备作为VLAN 10网关的高可用性。通过详细的配置步骤,确保网络冗余和稳定性。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 本文介绍了如何在 C# 和 XNA 框架中实现一个自定义的 3x3 矩阵类(MMatrix33),旨在深入理解矩阵运算及其应用场景。该类参考了 AS3 Starling 和其他相关资源,以确保算法的准确性和高效性。 ... [详细]
  • MongoDB的核心特性与架构解析
    本文深入探讨了MongoDB的核心特性,包括其强大的查询语言、灵活的文档模型以及高效的索引机制。此外,还详细介绍了MongoDB的体系结构,解释了其文档、集合和数据库的层次关系,并对比了MongoDB与传统关系型数据库(如MySQL)的逻辑结构。 ... [详细]
  • 本文介绍如何在 Visual Studio Code 中使用 Jupyter Notebook 插件,包括创建、编辑和运行笔记本的基本操作。 ... [详细]
  • 本文探讨了在多种编程语言中实现Hello World输出的方法,从经典的C语言到现代的JavaScript,每种语言都有其独特的表达方式。 ... [详细]
  • 本文详细介绍了Java集合框架中的Collection体系,包括集合的基本概念及其与数组的区别。同时,深入探讨了Comparable和Comparator接口的区别,并分析了各种集合类的底层数据结构。最后,提供了如何根据需求选择合适的集合类的指导。 ... [详细]
author-avatar
夏雨之唯美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有