use*_*959 3 linux bash if-statement
下面的bash脚本将MAC地址作为变量,并找到与该MAC地址对应的IP地址.
#!/bin/bash
read address
OUTPUT="$(nmap -sn -n /IP_ADDRESS_RANGE/ | grep -B 2 "$address" |
grep -e ^.*[0-9].[0-9].[0-9].[0-9] | awk '{print substr($0,22)}')"
if [ ${OUTPUT} = ""]; then
echo "not found"
else
echo "${OUTPUT}"
arpspoof -i wlan1 -t ${OUTPUT} /GATEWAY/
fi
Run Code Online (Sandbox Code Playgroud)
虽然它工作正常并且如我所料,但是当我执行它时会收到警告,我想知道如何修复它.输入MAC地址后得到的输出:
find.sh: 7: [: =: argument expected
/IP_ADDRESS/
**:**:**:**:*:* **:**:**:**:**:** 0806 42: arp reply 192.168.1.1 is-at **:**:**:**:*:*
Run Code Online (Sandbox Code Playgroud)
有多个错误.shellcheck找到最明显的:
首先,你在这里错过了一个空间:
if [ ${OUTPUT} = "" ]
^--- Required
Run Code Online (Sandbox Code Playgroud)
其次,你缺少所需的引用:
if [ "${OUTPUT}" = "" ]
^-- Here -^
Run Code Online (Sandbox Code Playgroud)
这应该足以摆脱你所看到的错误.
以下是其他问题:
你的正则表达式试图匹配一个ipv4地址,而是匹配8个字符串,其他每个字符都是一个数字.
正则表达式是不带引号的,因此它也可能意外地匹配目录中的文件并中断 grep
你运行脚本sh yourscript.这仅适用于sh脚本.要运行bash脚本,请使用bash yourscript.
| 归档时间: |
|
| 查看次数: |
7691 次 |
| 最近记录: |