powershell - 使用 PowerShell 在 CSV 文件中执行 NMAP 命令的结果
问题描述
我想帮助在 Powershell 中编写一个脚本,该脚本仅将 nmap -sv 192.168.0.0/24 命令的 nips 放入 CSV 文件
命令输出
Starting Nmap 7.80 ( https://nmap.org ) at 2019-11-14 17:36 E. South America Standard Time
Nmap scan report for fwmatriz.niplan.com.br (192.168.0.1)
Host is up (0.00s latency).
MAC Address: 00:1A:8C:5C:7A:9C (Sophos)
Nmap scan report for npespsql01.niplan.com.br (192.168.0.2)
Host is up (0.00s latency).
MAC Address: 80:C1:6E:62:06:00 (Hewlett Packard)
Nmap scan report for npespntpdc.niplan.com.br (192.168.0.3)
Host is up (0.00s latency).
MAC Address: 00:26:B9:4F:8A:27 (Dell)
Nmap scan report for npespdc06.niplan.com.br (192.168.0.4)
Host is up (0.00s latency).
MAC Address: D4:AE:52:70:7A:F3 (Dell)
Nmap scan report for npespntorc.niplan.com.br (192.168.0.5)
Host is up (0.00s latency).
MAC Address: 00:0C:29:F4:19:CC (VMware)
Nmap scan report for npespntfs01.niplan.com.br (192.168.0.6)
我想得到一个这样的 CSV 文件:
npespsql01
npespntpdc
npespdc06
npespntorc
npespntfs01
谢谢
解决方案
您可以执行以下操作:
(nmap -sv 192.168.0.0/24 | Select-String -Pattern '\S+(?=\.niplan\.com)').Matches.Value
Set-Content
您可以使用或将其通过管道传输到文件Out-File
。如果要创建 CSV 文件,则需要先输出具有命名属性的对象。将字符串集合发送到Export-Csv
将只得到字符串的长度,因为这是字符串对象的唯一命名属性。下面是创建计算属性的示例,该属性使用与命令NIPS
匹配的值命名。nmap
(nmap -sv 192.168.0.0/24 | Select-String -Pattern '\S+(?=\.niplan\.com)').Matches.Value |
Select-Object @{Name='NIPS';Expression={$_}} |
Export-Csv 'file.csv' -NoType
除非使用开关,否则-Pattern
in Select-String使用正则表达式模式匹配。-SimpleMatch
如果您的反向名称无法解析到niplan.com.br
域,则可能需要对其进行调整。您可以改为执行以下操作,它将匹配所有字符,直到文本.
之后的第一个Nmap scan report for
字符。
Select-String -pattern '(?<=Nmap scan report for )[^\.]+'
推荐阅读
- android - 改造响应:{code=404, message=Not Found}
- java - 2 个语句之间的差异
- docker - Docker 检查与 Docker 清单在层摘要中的差异
- php - 如何使用 OneToMany 关系定义映射 | VichUploaderBundle
- oracle - LIKE 运算符未在 oracle 中获取结果
- angular - 如何从模板中的 Observable 函数中获取价值 - Angular
- javascript - 在cordva ios应用程序中查看另一个网页
- c# - 如何在 Grid.mvc 中更改页面大小
- php - 尝试从 php mysql 中获取随机报价,使用颤振 http
- jekyll - 无法在 Jekyll 中检索自定义 Netlify CMS 集合