【问题标题】:Adding an Exception into try catch将异常添加到 try catch
【发布时间】:2016-04-18 11:21:55
【问题描述】:

我有一个关于脚本下面的脚本检查多个邮件服务器与 RBL 列表的问题,问题是某些列表(如 hostkarma.junkemailfilter.com)有某些答案,并不意味着 IP 实际上被列入黑名单。

所以我想在 try..catch 函数中添加一个异常,如果 hostkarma.junkemailfilter.com 以 127.0.2.1 回答,则邮件服务器不会进入 $blacklistedOn

脚本:

Param([string]$IP)

$statusAlive = "ScriptRes:Host is alive:"
$statusDead = "ScriptRes:No answer:"
$statusUnknown     = "ScriptRes:Unknown:"
$statusNotResolved = "ScriptRes:Unknown host:"
$statusOk          = "ScriptRes:Ok:"
$statusBad         = "ScriptRes:Bad:"
$statusBadContents = "ScriptRes:Bad contents:"

$reversedIP = ($IP -split '\.')[3..0] -join '.'

$blacklistServers = @(
  "dnsbl-3.uceprotect.net";
  "dnsbl-2.uceprotect.net";
  "dnsbl-1.uceprotect.net";
  "ix.dnsbl.manitu.net";
  "bl.spamcop.net";
  "bl.spamcannibal.org";
  "b.barracudacentral.org";
  "ips.backscatterer.org";
  "dnsbl.sorbs.net";
  "cbl.abuseat.org";
  "all.spamrats.com";
  "black.uribl.com";
  "multi.surbl.org";
  "multi.uribl.com";
  "truncate.gbudb.net";
  "bl.blocklist.de";
  "dnsbl.inps.de";
  "bl.mailspike.net";
  "bl.spameatingmonkey.net";
  "db.wpbl.info";
  "dnsbl.justspam.org";
  "hostkarma.junkemailfilter.com";
  "mail-abuse.blacklist.jippg.org";
  "psbl.surriel.com";
  "spam.dnsbl.anonmails.de";
  "ubl.unsubscore.com";
  "cblless.anti-spam.org.cn";
  "cblplus.anti-spam.org.cn";
  "spam.pedantic.org";
  "dev.null.dk";
  "blackholes.five-ten-sg.com";
  "spamsources.fabel.dk";
  "zen.spamhaus.org";
  "spamguard.leadmon.net";
  "dialups.visi.com";
  "dnsbl.kempt.net";
  "dnsbl.dronebl.org";
  "no-more-funn.moensted.dk";
  "relays.bl.kundenserver.de";
)

$blacklistedOn = @()

foreach ($server in $blacklistServers) {
    $IPServer = "$reversedIP.$server"

    try {
        $null = [System.Net.Dns]::GetHostEntry($IPServer)
        $blacklistedOn += $server
    } catch { }
}

if ($blacklistedOn.Count -gt 0) {
    # The IP was blacklisted on one or more servers; send your email here.
    # $blacklistedOn is an array of the servers that returned positive results.
    Write-Host "$statusAlive"$blacklistedOn
} else {
    Write-Host "$statusDead"$blacklistedOn
}

【问题讨论】:

  • 这是什么类型的javascript?
  • 这看起来像是某种 .NET 语言
  • 那是我的错,它是一个 Poweshell 脚本,只是在使用 JavaScript 时遇到了一些问题,所以我仍然想到 JavaScritp。

标签: powershell exception try-catch


【解决方案1】:

目前,您的脚本会丢弃主机查找返回的任何内容。要在返回特定响应时跳过地址,您需要将其分配给变量并在将服务器实际添加到 $blacklistedOn 之前进行检查:

try {
    $addr = [Net.Dns]::GetHostEntry($IPServer)
    if (-not ($server -eq 'hostkarma.junkemailfilter.com' -and $addr.AddressList.IPAddressToString -contains '127.0.2.1')) {
      $blacklistedOn += $server
    }
} catch { }

【讨论】:

  • 非常感谢,遗憾的是我的 PowerShell 知识不是那么好。
猜你喜欢
  • 2011-09-16
  • 1970-01-01
  • 2011-04-01
  • 2013-03-09
  • 2017-11-09
  • 1970-01-01
  • 2015-06-21
  • 2011-05-27
  • 1970-01-01
相关资源
最近更新 更多