Rotaciona o Ip de Saída no Postfix, script não funciona

0

Eu encontrei o que parece ser um bom pedaço de código para girar o postfix IP, mas eu realmente não consigo fazê-lo funcionar. quando eu executo eu recebo este erro:

rotate_postfix_ip.sh: 2: Syntax error: "(" unexpected

Eu não tenho ideia de como consertar isso, alguém poderia me ajudar por favor?

#!/bin/bash
ips=("64.250.120.128" "64.250.121.241" "64.250.121.242")
length=${#ips[@]}
pos='cat current.txt'
oldip=${ips[$pos - 1]}
if [ "$length" -eq "$pos" ] ; then
    echo "limit reached"
    pos=1
else
    echo "increment!"
    (( pos++ ))
fi

echo "$pos" > current.txt

newip=${ips[$pos - 1]}
echo "prev: $oldip"
echo "new: $newip"

sed -ie "s/smtp_bind_address=$oldip/smtp_bind_address=$newip/g" /etc/postfix/main.cf > /dev/null
service postfix reload






x@debi:~$ cat test.sh
#!/bin/bash
ips=("1" "2" "3")

x@debi:~$ sh test.sh
test.sh: 2: Syntax error: "(" unexpected
x@debi:~$ bash -xv test.sh
#!/bin/bash
ips=("1" "2" "3")
+ ips=("1" "2" "3")

caramba, não é algo com os novos finais da linha. Eu editei um novo arquivo com o vim e ele produz o mesmo erro.

    
por sathia 14.03.2013 / 11:22

2 respostas

1

Basta executar o script com o comando "bash". resolveria o problema,

por exemplo: bash rotate_postfix_ip.sh

    
por 30.01.2017 / 08:21
1

É por isso que eu sempre prefiro as soluções POSIX portáteis que sempre funcionam ...

#!/bin/sh

ips='
    64.250.120.128

    64.250.121.241
    64.250.121.242
'
#####################################################
[ ! -f './current.txt' ] && echo '1' > ./current.txt

nIPS=0
for ip in ${ips}; do nIPS=$(( nIPS + 1 )); done

pos=$(cat ./current.txt)
counter=1
for oldip in ${ips}; do
    [ $pos -eq $counter ] && break
    counter=$(( counter + 1 ))
done

[ "$nIPS" -eq "$pos" ] && {
    echo "limit reached"
    pos=1
} || {
    echo "increment!"
    pos=$(( pos + 1 ))
}

echo "$pos"  > current.txt

counter=1
for newip in ${ips};do
    [ $pos -eq $counter ] && break
    counter=$(( counter + 1 ))
done

echo "prev: $oldip"
echo "new: $newip"

sed -ie "s/smtp_bind_address=$oldip/smtp_bind_address=$newip/g" /etc/postfix/main.cf > /dev/null
service postfix reload
    
por 30.01.2017 / 09:02