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

成功!






本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/2053707,如需转载请自行联系原作者

目录
相关文章
|
7月前
|
缓存 中间件 测试技术
SOME/IP协议实践指南:精选开发与测试工具解析
SOME/IP协议实践指南:精选开发与测试工具解析
362 0
|
7月前
|
算法 异构计算 索引
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
122 1
|
14天前
|
监控 测试技术 定位技术
HTTP代理IP响应速度测试方案设计与指标体系
随着数字化发展,网络安全、隐私保护及内容访问自由成为核心需求。HTTP代理因其技术优势成为热门选择。本文介绍HTTP代理IP响应速度测试方案,包括基础性能、稳定性、地理位置、实际应用、安全性测试及监控指标,推荐测试工具,并提供测试结果评估标准。
27 2
|
1月前
|
域名解析 网络协议 测试技术
IP、掩码、网关、DNS1、DNS2到底是什么东西,ping telnet测试
理解IP地址、子网掩码、默认网关和DNS服务器的概念是有效管理和配置网络的基础。通过使用ping和telnet命令,可以测试网络连通性和服务状态,快速诊断和解决网络问题。这些工具和概念是网络管理员和IT专业人员日常工作中不可或缺的部分。希望本文提供的详细解释和示例能够帮助您更好地理解和应用这些网络配置和测试工具。
108 2
|
1月前
【Azure App Service】PowerShell脚本批量添加IP地址到Web App允许访问IP列表中
Web App取消公网访问后,只允许特定IP能访问Web App。需要写一下段PowerShell脚本,批量添加IP到Web App的允许访问IP列表里!
|
4月前
【Application Insights】使用Powershell命令向Application Insgihts发送测试数据
【Application Insights】使用Powershell命令向Application Insgihts发送测试数据
|
7月前
|
算法 异构计算
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
70 0
|
6月前
|
存储 测试技术
【工作实践(多线程)】十个线程任务生成720w测试数据对系统进行性能测试
【工作实践(多线程)】十个线程任务生成720w测试数据对系统进行性能测试
72 0
【工作实践(多线程)】十个线程任务生成720w测试数据对系统进行性能测试
|
6月前
|
数据采集 安全 网络安全
代理IP纯净度如何测试?
代理IP的纯净度关乎网络隐私、稳定性和安全性。纯净IP能保护用户身份,提供稳定连接,降低被识别为恶意访问的风险,并确保数据安全。测试纯净度包括检查IP历史、黑名单状态、SSL支持、匿名度及网络性能。在网络安全至关重要的今天,纯净代理IP是重要保障。
|
5月前
|
Java Redis 数据安全/隐私保护
Redis14----Redis的java客户端-jedis的连接池,jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,最好用jedis连接池代替jedis,配置端口,密码
Redis14----Redis的java客户端-jedis的连接池,jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,最好用jedis连接池代替jedis,配置端口,密码

热门文章

最新文章