Linux ./pingscript.sh-乔治亚州魏德曼';书

Linux ./pingscript.sh-乔治亚州魏德曼';书,linux,bash,Linux,Bash,我正试图从乔治亚·维德曼的书中创建一个bash脚本。我有我的XP目标机器和我的Kali机器并在运行 #!/bin/bash if [ "$1" == "" ] then echo "Usage: ./pingscript.sh [network]" echo "example: ./pingscript.sh 192.168.x.x" else for x in 'seq 1 254'; do ping -c 1 $1.$x | grep "64 bytes" | cut -d" " -f4 |

我正试图从乔治亚·维德曼的书中创建一个bash脚本。我有我的XP目标机器和我的Kali机器并在运行

#!/bin/bash
if [ "$1" == "" ]
then
echo "Usage: ./pingscript.sh [network]"
echo "example: ./pingscript.sh 192.168.x.x"
else
for x in 'seq 1 254'; do
ping -c 1 $1.$x | grep "64 bytes" | cut -d" " -f4 | sed 's/.$//'
done
fi
我不知道
8.8.8.8
是否应该是我XP的IP地址或网关地址,但当我这样做
/pingscript.sh 192.168.x
时,我应该会得到一个响应,但它会说
Ping未知主机

有人帮忙吗?

这里有:

引用其:

目的是在单引号中运行代码。这可能适用于倾斜的反勾号,
`..
,但这里使用了外观非常相似的单引号,
'
,结果是字符串文字而不是命令输出

这是反勾号的许多问题之一,因此最好使用
$(..)
来展开命令

换句话说,使用:

for x in $(seq 1 254); do
这是:

引用其:

目的是在单引号中运行代码。这可能适用于倾斜的反勾号,
`..
,但这里使用了外观非常相似的单引号,
'
,结果是字符串文字而不是命令输出

这是反勾号的许多问题之一,因此最好使用
$(..)
来展开命令

换句话说,使用:

for x in $(seq 1 254); do

您希望在
seq 1 254
周围使用反引号,而不是单引号,尽管
对于x in$(seq 1 254)
是等效的且更可取的。上述代码位于Georgia的书的第78页,正确的用法是:
echo“示例:./pingscript.sh 192.168.20”
,这就是为什么
ping-c1$1.$x
会起作用的原因。您希望在
seq 1254
周围使用反引号,而不是单引号,尽管
对于x in$(seq 1254)
是等效且更可取的。上述代码在乔治亚的书的第78页,正确的用法是:
echo“示例:./pingscript.sh 192.168.20”
,这就是为什么
ping-c1$1.$x
可以工作的原因。现在它可以在一定数量范围内ping“未知主机”。我用的是有线连接。它应该一遍又一遍地说192.168.x.x。为什么说:未知主机?另外,我是使用XP目标的网关还是IP地址?@wurmh0le如何使用脚本的“示例”是错误的;只需提供要扫描的网络的前三个八位字节(0到255之间的数字);类似于
/pingscript.sh192.168.0
——请注意,“x”不是有效的八位字节,只是一个占位符。192.168.0可能也不是您感兴趣的网络,您需要计算出您感兴趣的实际网络号。现在,它在一定的数字范围内ping“未知主机”。我用的是有线连接。它应该一遍又一遍地说192.168.x.x。为什么说:未知主机?另外,我是使用XP目标的网关还是IP地址?@wurmh0le如何使用脚本的“示例”是错误的;只需提供要扫描的网络的前三个八位字节(0到255之间的数字);类似于
/pingscript.sh192.168.0
——请注意,“x”不是有效的八位字节,只是一个占位符。192.168.0可能也不是您感兴趣的网络,您需要计算出您感兴趣的实际网络号。