首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与linux bash同时向多个主机发送http-get请求。

与linux bash同时向多个主机发送http-get请求。
EN

Stack Overflow用户
提问于 2020-07-07 14:01:26
回答 3查看 270关注 0票数 2

是否可以使用linux工具同时向多个主机发送http-get请求?

现在我做了

代码语言:javascript
复制
wget -O- http://192.168.1.20/get_data-php > out.log

但我需要请求所有的192.168.1.0/17 IP。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-07 14:43:49

代码语言:javascript
复制
#!/bin/sh
rm address.txt allout.txt # remove old file with addresses and contents
nmap -n -sn 192.168.1.0/17 -oG - | awk '/Up$/{print $2}' > address.txt # get all active hosts and store into a file address.txt

while IFS="" read -r add || [ -n "$add" ]
do
  wget -q -O- http://"$add"/get_data-php > out"$add".log & # for every address create file with wget content
done < address.txt

wait

cat out*.log > allout.txt # put all .log file contents to allout.txt

rm -r out*.log # remove all created .log files
票数 2
EN

Stack Overflow用户

发布于 2020-07-07 17:51:27

最简单的方法是使用bash支撑展开。

代码语言:javascript
复制
wget -O- http://192.168.{0..127}.{1..254}/get_data-php >>out.log

..。如果性能不是问题(因为它将按顺序运行请求)。

当然,有一些方法可以并行运行请求,但我想这超出了这个问题的范围。

票数 2
EN

Stack Overflow用户

发布于 2020-08-04 02:08:01

基于Drejc的回答,但避免了对临时文件的干扰,并且更好地处理了低于主机数量的进程限制(例如,如果您有1000 s的主机)。

代码语言:javascript
复制
#!/bin/sh

nmap -T5 -n -sn 192.168.1.0/17 -oG - |
  awk '/Up$/{print $2}' |
  parallel -j0 wget -q -O- http://{}/get_data-php > allout.txt
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62777037

复制
相关文章

相似问题

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