首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过CMD记录Ping信息

通过CMD记录Ping信息
EN

Stack Overflow用户
提问于 2019-11-26 11:27:20
回答 3查看 76关注 0票数 0

我目前有连接问题,我想监视某个IP地址并记录这些信息。

我知道我可以使用这个命令(以google.com为例):

代码语言:javascript
复制
ping google.com /t |Foreach{"{0} - {1}" -f (Get-Date),$_} > pingORA.txt

在这种情况下,它将每秒钟记录一个ping结果。我希望它每30秒记录一次ping结果。是否有方法将此添加到上面的命令中?

EN

回答 3

Stack Overflow用户

发布于 2019-11-26 12:58:50

使用awk保存每30 ping的结果,丢弃其余的

代码语言:javascript
复制
awk '
BEGIN { srand();t=srand();\
while (1 ) {\
  tElapsed=srand()-t;
  if(tElapsed%30==0){\
   print("write to file from here")\
  }\
  print ("pinging google");\
  system("sleep 1");\
 }
 }'
票数 0
EN

Stack Overflow用户

发布于 2019-11-26 13:53:24

虽然您似乎更想要一个powershell解决方案(因此我也包含了相关的标记),但是您仍然可以在普通的cmd中使用for循环进行相同的操作:

代码语言:javascript
复制
for /f "delims=" %a in ('ping google.com -t') do echo %a >> pingORA.txt & timeout /t 30 >nul 2>&1

注意,这是直接来自cmd而不是powershell

票数 0
EN

Stack Overflow用户

发布于 2019-11-26 19:31:18

这可以在PowerShell中使用Test-Connection完成。

代码语言:javascript
复制
$hostName = 'localhost'
$waitTime = 30
$logFile = 'pingORA.txt'
if (Test-Path -Path $logFile) { Remove-Item -Path $logFile }

while (1) {
    $p = Test-Connection -ComputerName $hostName -Count 1 -ErrorAction SilentlyContinue
    if ($null -ne $p) {
        "{0} - {1} - {2}" -f (Get-Date), $hostName, $p.ProtocolAddress |
            Out-File -FilePath $logFile -Encoding ascii -Append
    } else {
        "{0} - {1} - {2}" -f (Get-Date), $hostName, 'offline' |
            Out-File -FilePath $logFile -Encoding ascii -Append
    }

    Start-Sleep -Seconds $waitTime
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59049917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档