我正试图从乔治亚·维德曼的书中创作一个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.x的时候,我应该得到一个响应,但是它却告诉我Ping unknown host
有人帮忙吗?

最佳答案

这里是shellcheck

Line 7:
for x in 'seq 1 254'; do
         ^-- SC2041: This is a literal string. To run as a command, use $(..) instead of '..' .

引用其wiki
其目的是运行单引号中的代码。这可能适用于倾斜的倒勾,`..`,但这里使用了非常相似的单引号,导致字符串文本而不是命令输出。
这是backticks的许多问题之一,因此最好使用'..'展开命令。
换句话说,使用:
for x in $(seq 1 254); do

10-08 07:41