gpt4 book ai didi

linux - Bash 上的端口扫描器

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:13 25 4
gpt4 key购买 nike

#!/bin/bash
host=$1
startport=$2
stopport=$3

function pingcheck
{
ping = `ping -c 1 $host | grep bytes | wc -l`
if [ $ping > 1 ]; then
echo "$host is up";
else
echo "$host is down quitting";
exit
fi
}

function portcheck
{
for ((counter=$startport; counter<=$stopport; counter++))
do
(echo > /dev/tcp/$host/$counter) > /dev/null 2>&1 && echo "$counter open"
done
}

pingcheck
portcheck

我尝试通过从终端向脚本传递 127.0.0.1 1 5 来测试脚本,但我一直得到的只是 ping: unknown host =127.0.0.1 正在退出。也尝试使用其他 IP 地址,我得到了相同的输出。因为我是 shell 脚本的新手,所以我正在按照一本书的说明进行操作。如果有人能告诉我我做错了什么,那将会很有帮助。

最佳答案

我在内嵌了一些评论:

#!/bin/bash
host=$1
startport=$2
stopport=$3

function pingcheck
{
ping=`ping -c 1 $host | grep bytes | wc -l` #Don't use spaces before and after the "="
if [ $ping -gt 1 ]; then #Don't use >, use -gt
# if [[ $ping > 1 ]]; then #Or use [[ and ]], but this won't work in all shells
echo "$host is up";
else
echo "$host is down quitting";
exit
fi
}

function portcheck
{
for ((counter=$startport; counter<=$stopport; counter++))
do
(echo > /dev/tcp/$host/$counter) > /dev/null 2>&1 && echo "$counter open"
done
}

pingcheck
portcheck

bash 中的变量始终采用以下格式:

VARNAME=VALUE

你不应该在它们之间放置空格。 VALUE 可以是使用 `` 或使用 $() 的表达式。 $() 通常是首选方式,因为您可以执行 $(something $(something)) 而不能执行 `something `something``。

if 的语法是:

if EXPRESSION
then
something
fi

sh 中的表达式始终是对应用程序的调用。 [是ifs中常用的应用。您可以通过执行 man [ 来获得一本非常好的 [ 手册。 Bash 原生支持 [[,它不是应用程序,但可以做的比 [.

关于linux - Bash 上的端口扫描器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47875563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com