首页 > 解决方案 > ./pingscript.sh - 乔治亚·魏德曼的书

问题描述

我正在尝试从 Georgia Wiedmann 的书中创建一个 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

有人帮忙吗?

标签: linuxbash

解决方案


这是shellcheck

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

引用它的维基

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

这是反引号的众多问题之一,因此最好使用$(..)扩展命令。

换句话说,使用:

for x in $(seq 1 254); do

推荐阅读