Author Topic: [Resolvido] [arithmetic expression: expecting primary: " % 255"]  (Read 4017 times)

Offline reynaldohortensi

  • Usuário Ubuntu
  • *
  • Posts: 42
    • View Profile
[Resolvido] [arithmetic expression: expecting primary: " % 255"]
« on: 22 de September de 2014, 19:01 »
Olá galera,

eu estou tentando escrever um script para mudar meu endereço mac pra um aleatório, mas o problema não está relacionado à mudança de mac e sim (ou talvez) a um erro de sintax.

Esse é o conteúdo do arquivo chmac.sh:
Code: [Select]
#!/bin/bash

echo $SHELL
MAC=00
MAX=$(echo "16 ^ 2 - 1" | bc)
echo "MAX vale "$MAX

for x in 1 2 3 4 5; do
    rand=$RANDOM
    NUM=$((${rand} % ${MAX}))
    echo "NUM em decimal "$NUM
    NUM=`echo "obase=16; $NUM" | bc`
    echo "NUM convertida para hexa "$NUM
    NUM=`printf "%02x" 0x$NUM`
    MAC=$MAC:$NUM
done

echo "O novo MAC será "$MAC
service network-manager stop
ifconfig $1 down
ifconfig $1 hw ether $MAC
ifconfig $1 up
service network-manager start

Quando executo da primeira maneira (como um script deve ser executado) tenho a seguinte saída de erro:
Quote
$ sudo ./chmac.sh wlan0
/bin/bash
MAX vale 255
./chmac.sh: 14: ./chmac.sh: arithmetic expression: expecting primary: " % 255"
Por acaso descobri que se rodar com "bash" antes funciona:
Quote
$ sudo /bin/bash ./chmac.sh wlan0
/bin/bash
MAX vale 255
NUM em decimal 238
NUM convertida para hexa EE
NUM em decimal 55
NUM convertida para hexa 37
NUM em decimal 31
NUM convertida para hexa 1F
NUM em decimal 176
NUM convertida para hexa B0
NUM em decimal 162
NUM convertida para hexa A2
O novo MAC será 00:ee:37:1f:b0:a2
network-manager stop/waiting
network-manager start/running, process 7946

Alguém sabe porque não funciona da primeira maneira?

Abraços e muito obrigado desde já.



« Last Edit: 22 de September de 2014, 20:08 by reynaldohortensi »

Offline reynaldohortensi

  • Usuário Ubuntu
  • *
  • Posts: 42
    • View Profile
Galera,
acho que resolvi! \o/

Haviam alguns comentários no início do script que eu não publiquei, mas a shebang (#!/bin/bash) DEVE estar na primeira linha do script. Caso contrário ela é interpretada também como um comentário e o script pode rodar na shell incorreta. Então passei a shebang pra antes dos comentários.

Vou deixar aqui casa alguém tenha o mesmo problema que eu.

Abraços!