首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用nmap -p和cat 'file'?

如何使用nmap -p和cat 'file'?
EN

Unix & Linux用户
提问于 2022-01-04 20:28:18
回答 2查看 605关注 0票数 0

我正在尝试创建一个简单的bash脚本,它可以使用nmap -p在多个-p和端口上运行“特定”端口扫描。我遇到的问题是,当它从port#文件中读取.txt后的IP时,文本文件在端口和IP之间有必要的空间,但是它会导致脚本失败。下面是我的代码。我试着把这变得简单,我唯一能想到的就是创建一个数组,但即便如此,我仍然认为nmap -p端口扫描的格式也会出现同样的问题。有什么建议吗?

代码语言:javascript
运行
复制
for i in $(cat 'filepathway')

do
nmap -p $i

done

它执行如下: nmap -p 'port#‘

而不是这个: nmap -p 'port#‘'IP#’

.txt看起来如下(这些值是随机的)

代码语言:javascript
运行
复制
23001 172.55.545.254
23002 172.55.545.254

..。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2022-01-04 21:14:25

代码语言:javascript
运行
复制
for i in $(cat file); ...

不逐行读取文件,而是逐字读取文件。

您可以使用while read ...

代码语言:javascript
运行
复制
while read port ip; do
    nmap -p "$port" "$ip"
done < "file"

另见:为什么使用外壳循环来处理文本被认为是错误的做法?

票数 2
EN

Unix & Linux用户

发布于 2022-01-04 21:37:37

您的问题是,循环从$(cat filepathway)的拆分扩展中分别读取每个单词。这将是一个端口号、一个IP地址、另一个端口号等等。通常,您应该避免重复扩展命令替换,因为它的内存效率低下,容易出现您遇到的错误类型和其他错误,并且在命令的全部结果读入内存之前不允许循环开始执行。

如果不是端口号,您可以让nmap使用-iL读取IP地址列表:

代码语言:javascript
运行
复制
nmap -iL addr.list

..。或者,如果你想要覆盖特定范围的端口,

代码语言:javascript
运行
复制
nmap -p 23000-23100 -iL addr.list

现在,您可以做的是像这样使用xargs

代码语言:javascript
运行
复制
xargs -L 1 nmap -p 

这将读取每一行,并执行nmap -p给出的命令,后面跟着端口号和IP地址。

大多数常见的xargs实现将允许您使用带有数值选项-参数的-P选项运行许多并行调用(请参阅系统上的tho xargs手册)。

如果仍然希望使用循环,请确保从每一行(作为已经由pLumo显示)分别读取端口号和IP地址:

代码语言:javascript
运行
复制
while read -r port ip; do
    nmap -p "$port" "$ip"
done 
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/685037

复制
相关文章

相似问题

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