linux - ./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
。
有人帮忙吗?
解决方案
这是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
推荐阅读
- amazon-web-services - 如何在应用程序流程中将服务从 CF 连接到 AWS 中的应用程序?
- python - 删除所有非字符,除了python中的数字、拉丁字母和西里尔字母
- macos - Cocoa swift macOS 打印 html 到 pdf
- android - 如何检查 Unity 应用程序是否在修改后的 Android 系统上运行?
- java - 如何使用 system.out.println() 使 Wildfly 控制台打印日文文本;
- java - LibGDX box2d 检测对象的特定实例
- swift - 条件绑定的初始化程序必须具有可选类型,而不是“字符串”?
- dart - Flutter 错误 - 内核二进制格式版本无效(找到 4,预期 6)
- html - 仅使用 CSS3 的视差效果
- sql - 从 Postgres 中的 Json 数组对象中获取值