Erro de sintaxe de script de entrada de usuário

0

Eu sou novo em shell scripts e tudo, e queria escrever um script que executaria automaticamente este comando para mim:

sudo aireplay-ng -0 (given number) -a (Router MAC Address) -c (Target MAC address) wlx000f60071636

O script pediria a entrada do usuário e executaria o comando com a entrada do usuário.

Então, fiz referência a estas páginas:

link - Para a estrutura do Aircrack

link - Para projetar funções que permitiriam números diferentes em vez de -0, resultando em comandos variados

link - Para entrada do usuário

link - Para variáveis

E usando essas páginas, eu escrevi este script:

#!/bin/sh
ROUTER="(my router MAC)"
echo "Perform a wifi command?"
select yn in "Yes" "No"; do
    case $yn in
        Yes ) Deauth; break;;
        No ) exit;;
    esac
done

Deauth () {
    sudo airmon-ng start wlx000f60071636
    sudo airmon-ng check kill
    echo "Please specify device MAC:"
    read dmac
    echo "Number of commands to send, with 0 being unlimited:"
    read numts
    sudo aireplay-ng -0 $numts -a $ROUTER -c $dmac wlx000f60071636
}

No entanto, depois de executar

chmod +x wificommand.sh

e

sh wificommand.sh

Eu recebo uma mensagem de erro de

wificommand.sh: 4: wificommand.sh: select: not found
wificommand.sh: 9: wificommand.sh: Syntax error: "done" unexpected

O que há de errado com meu código? A seleção está indisponível para uso? Por que não deveria estar lá? Esta é a maneira correta de executar um comando com a entrada do usuário?

    
por D4rKP01s0n 10.06.2016 / 02:15

1 resposta

1

select é um bash incorporado, não um sh incorporado. Altere sua primeira linha para:

#!/bin/bash
    
por 10.06.2016 / 02:20