BASH港口与组合敲门

时间:2015-09-27 17:22:48

标签: bash combinations

我正在尝试使用bash生成{1..3}的所有可能组合的端口敲门。我花了最后48小时试图找到答案,最后寻求一些帮助。

我目前的代码如下:

#!/bin/bash
HOST=$1
COUNTER=0
while [ COUNTER -lt 100 ];do
    shift
    for PORT in "$@"
    do
        nmap -Pn --host_timeout 100 --max-retries 0 -p $PORT $HOST
let COUNTER=COUNTER+1
    done
done

#Syntax knock.sh x.x.x.x 1 2 3

1 个答案:

答案 0 :(得分:0)

不确定为什么你有这个COUNTER,但据我所知,你可能会:

  • 放错地方shift
  • 在你的条件下误用了[](测试),
  • 放错地方let COUNTER=COUNTER+1

快速修复,只需极少的更改:

#!/bin/bash
HOST=$1
shift
COUNTER=0
while [ $COUNTER -lt 100 ]; do
    for PORT in "$@"
    do
        nmap -Pn --host_timeout 100 --max-retries 0 -p $PORT $HOST
    done
    let COUNTER=COUNTER+1
done

就个人而言,我会写:

HOST=$1
shift
for (( COUNTER = 0; COUNTER < 100; COUNTER += 1 )); do
  for PORT in "$@"; do
    nmap -Pn --host_timeout 100 --max-retries 0 -p $PORT $HOST
  done
done

我觉得更容易理解。味道很重要。关于你的编码风格的备注:你应该尝试保持一致,并在半列(你的while循环)或换行符(你的for循环)之间进行选择。当然,正确缩进代码。这真的有帮助。