网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

PowerShell多线程测试IP端口-创新互联

最近在学Python的爬虫,昨天试着用多线程去使用不同的代理IP,基本原理是把所有的IP地址都放入一个队列,然后使用多线程地去读取队列里面的值。

创新互联公司是一家集网站建设,沂源企业网站建设,沂源品牌网站建设,网站定制,沂源网站建设报价,网络营销,网络优化,沂源网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

今天突然想到,类似的方式在PowerShell里面能不能实现呢?PowerShell自己没有直接可以使用的队列模块,不过可以调用.Net里面的类来实现。

下面是一个简单的例子

$queue = [System.Collections.Queue]::Synchronized( (New-Object System.Collections.Queue) )

$lines=gc C:\temp\thebigproxylist-17-12-20.txt

foreach($line in $lines){
    $queue.enqueue($line)
}

write-host $queue.count

$Throttle = 5 #threads

#脚本块,对指定的IP测试端口,结果保存在一个对象里面

$ScriptBlock = {
   Param (
      [string]$value
   )

   $ip=$value.Split(":")[0]
   $port=$value.Split(":")[1]
   $a=test-netconnection -ComputerName $ip -Port $port

   $RunResult = New-Object PSObject -Property @{

      ComputerName=$ip
      Port=$port
      TCP=$a.TCPTestSucceeded

   }
   Return $RunResult
}

#创建一个资源池,指定多少个runspace可以同时执行

$RunspacePool = [RunspaceFactory]::CreateRunspacePool(1, $Throttle)
$RunspacePool.Open()
$Jobs = @()

for($i=1;$i -lt 20;$i++){
    $currentvalue=$queue.Dequeue()
   write-Host $currentvalue
    $Job = [powershell]::Create().AddScript($ScriptBlock).addargument($currentvalue)
    $Job.RunspacePool = $RunspacePool
    $Jobs += New-Object PSObject -Property @{
      Server = $currentvalue
      Pipe = $Job
      Result = $Job.BeginInvoke()
   }

}

 #循环输出等待的信息.... 直到所有的job都完成 

Write-Host "Waiting.." -NoNewline
Do {
  write-Host "." -NoNewline
   Start-Sleep -Seconds 1
} While ( $Jobs.Result.IsCompleted -contains $false)
Write-Host "All jobs completed!"

#输出结果 
$Results = @()
ForEach ($Job in $Jobs)
{   $Results += $Job.Pipe.EndInvoke($Job.Result)
}

$Results

结果如下

Waiting................................................................................All jobs completed!

Port ComputerName TCP


80 137.74.168.174 True
8080 103.28.161.68 True
53281 91.151.106.127 False
3128 177.136.252.7 True
80 47.89.22.200 True
8888 118.69.61.57 True
8080 192.241.190.167 True
80 185.124.112.130 True
3128 83.65.246.181 True
3128 79.137.42.124 True
8080 95.0.217.32 False
8080 104.131.94.221 True
65301 177.234.7.66 True
8080 37.57.179.2 False
8080 197.211.27.234 True
8080 139.59.117.11 True
8080 168.0.158.53 False
8080 154.48.196.1 True
8080 139.59.125.53 True

成功!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻标题:PowerShell多线程测试IP端口-创新互联
网页链接:http://bjjierui.cn/article/dcpded.html

其他资讯