热门标签 | 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



推荐阅读
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社区 版权所有