Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在循环中读取两个列表,并逐个检查整个列表_Bash_Loops_Heredoc_Nmap - Fatal编程技术网

Bash 在循环中读取两个列表,并逐个检查整个列表

Bash 在循环中读取两个列表,并逐个检查整个列表,bash,loops,heredoc,nmap,Bash,Loops,Heredoc,Nmap,我正在用两种方式编写bash,但存在一个问题: (一) 我想逐个检查每个ip和所有端口 有什么想法吗 然后,您可以在不同的文件描述符上重定向每个文件: while read -r -u3 port; do while read -r -u4 ip; do # do stuff with $port and $ip echo -n "$ip $port: " OUT=$( nmap -p "$port" --script=http-head

我正在用两种方式编写bash,但存在一个问题:

(一)

我想逐个检查每个ip和所有端口

有什么想法吗


然后,您可以在不同的文件描述符上重定向每个文件:

while read -r -u3 port; do
    while read -r -u4 ip; do

        # do stuff with $port and $ip
        echo -n "$ip $port: "
        OUT=$( nmap -p "$port" --script=http-headers.nse "$ip" |
               tail -n 13 | 
               awk -F: '{print $2; exit}' )
        [[ $OUT == Apache ]] && echo right || echo wrong

    done 4< "$2"
done 3< "$1"
读取时-r-u3端口;做
而read-r-u4ip;做
#用$port和$ip做一些事情
echo-n“$ip$端口:”
OUT=$(nmap-p“$port”--script=http-headers.nse“$ip”|
尾-n 13|
awk-F:“{print$2;exit}”)
[[$OUT==Apache]]&&echo-right | | echo-error
完成4<“$2”
完成3次<“$1”

您不需要在管道中使用
head
:awk可以在阅读第一行后退出。谢谢……但有一个问题。我的结果是Apache,但输出脚本显示“错误”。以下命令在脚本编号为:nmap-p80--script=http-headers.nse www.test.com | tail-n13 | awk-F:'{print$2;exit}时有效“使用
echo”>$out进行测试您所说的同样有效..非常感谢:)
#!/bin/bash
if [ $# -ne 2 ]; then
echo "Usage: ./nmap <port-range> <ip-list>"
exit 1
fi

OUT=`nmap -p $1 --script=http-headers.nse $2 | tail -n 13 | head -n 1 | awk -F: '{print$2}'`

while IFS= read -r LINE; do           
grep "$LINE" $2                       
if [ $OUT == 'Apache' ]; then
   echo right
else
   echo wrong
fi
cat ports.txt
80
443

cat ip.txt
1.1.1.1
2.2.2.2
3.3.3.3
while read -r -u3 port; do
    while read -r -u4 ip; do

        # do stuff with $port and $ip
        echo -n "$ip $port: "
        OUT=$( nmap -p "$port" --script=http-headers.nse "$ip" |
               tail -n 13 | 
               awk -F: '{print $2; exit}' )
        [[ $OUT == Apache ]] && echo right || echo wrong

    done 4< "$2"
done 3< "$1"