我正在尝试使用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
答案 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循环)之间进行选择。当然,正确缩进代码。这真的有帮助。