#!/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来测试脚本但是我一直得到的是ping:unknown host = 127.0.0.1正在退出。尝试使用其他IP地址,我得到了相同的输出。我正在按照书中的指示,因为我是shell脚本的新手。如果有人能告诉我我做错了什么会很有帮助。
答案 0 :(得分:0)
我在网上发表了一些评论:
#!/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))
而你做不了什么``某事``。
if
的语法是:
if EXPRESSION
then
something
fi
表达式在sh
始终是对应用程序的调用。 [
是通常在ifs中使用的应用程序。通过执行[
,您可以获得非常好的man [
手册。 Bash
原生支持[[
,这不是一个应用程序,但可以做的不仅仅是[。