我正在尝试使用 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
最佳答案
不确定你为什么有这个COUNTER
,但据我了解你想要什么,你可能:
- 错位的
shift
, - 在您的 while 条件中误用了
[]
(测试), - 错位
让 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 循环)之间进行选择。当然,正确缩进您的代码。这真的很有帮助。
关于BASH端口敲与组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32810683/