Esse artigo é para você que tem muitos rádios da Ubiquiti e não quer ou não pode usar o AirControl para atualizá-los. Com um simples script feito em bash é possível atualizar todos os seus rádios. Basta que o servidor de SSH esteja ativo neles e que todos tenham o mesmo usuário e senha. Estou deduzindo que você não configurou o método de autenticação por chaves assimétricas. Faça o seguinte procedimento:
- Crie um diretório chamado ubnt
- Baixe a última versão dos firmware de cada plataforma que você usa na sua rede (XM, XW…) dentro desse diretório.
- No mesmo diretório, crie um arquivo com o nome atualizar_radios.sh com o conteúdo abaixo:
#!/bin/bash USUARIO="ubnt" SENHA="senhadoradio" for IP in `cat lista_radios.txt`; do echo "Atualizando o rádio de IP: $IP" VERSAO_ATUAL=`sshpass -p $SENHA ssh -o "StrictHostKeyChecking no" -o KexAlgorithms=+diffie-hellman-group1-sha1 $USUARIO@$IP cat /etc/version` if [ "$VERSAO_ATUAL" != "" ] ; then echo "Versão atual: $VERSAO_ATUAL" PLATAFORMA=`echo $VERSAO_ATUAL | cut -f 1 -d '.'` ARQUIVO=`ls $PLATAFORMA*bin` VERSAO_NOVA=`echo $ARQUIVO | cut -d '.' -f 1,2,3,4` echo "Versão nova: $VERSAO_NOVA" if [ "$VERSAO_ATUAL" = "$VERSAO_NOVA" ]; then echo "Já Atualizado..." else echo "Atualizando..." sshpass -p $SENHA ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 $USUARIO@$IP rm -f /tmp/*bin echo "Copiando o arquivo $ARQUIVO para o rádio. Isso pode demorar um pouco!" sshpass -p $SENHA scp -o KexAlgorithms=+diffie-hellman-group1-sha1 $ARQUIVO $USUARIO@$IP:/tmp echo "Aplicando..." sshpass -p $SENHA ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 -f $USUARIO@$IP ubntbox fwupdate.real -m /tmp/$ARQUIVO &> /dev/null echo "Feito!" fi else echo "Equipamento inacessível" fi done
- crie também um arquivo chamado lista_radios.txt com os endereços IP de todos os rádios que você queira atualizar. Coloque, de preferência, na ordem dos mais distantes para os mais próximos, um em cada linha.
- Altere o valor das variáveis usuario e senha para os que você usa na sua rede.
- Se você não tiver o comando sshpass, instale-o: sudo apt-get install sshpass (Ubuntu e Debian). Eu usei o sudo equo i sshpass (Sabayon).
- Execute o script com o comando sh atualizar_radios.sh ou torne-o executável:
- chmod o+x atualizar_radios.sh
- ./atualizar_radios.sh
Alguns comentários sobre o script. O parâmetro -o “StrictHostKeyChecking no” do SSH foi usado para que ele não peça autorização para adicionar o IP na lista de hosts conhecidos. O parâmetro -o KexAlgorithms=+diffie-hellman-group1-sha1 do SSH foi usado por questão de compatibilidade, porque algumas versões antigas do SSH da Ubiquiti só aceitam esse método. No último comando SSH foi usado o parâmetro -f para que ele não fique esperando o processo de atualização, deixando-o rodar em background. Além disso as mensagens de erro e da saída padrão foram redirecionadas para /dev/null para não atrapalhar a visualização das mensagens referentes ao próximo rádio na continuidade do loop.
Esse script é util para quem tem os rádios em bridge sem acesso à internet. Foi testado em rádios da plataforma XM e XW.
O sshpass foi usado apenas por conveniência, já que pode trazer problemas de segurança. Pense bem antes de usar ele em servidores na internet.
Algumas checagens extras podem ser feitas, mas deixo como dever de casa.
Use por sua conta e risco.
Se quiser aprender como fazer o backup dos rádios em lote veja esse artigo:
http://daniel.hoisel.com.br/2016/07/10/dica-fazendo-backup-dos-radios-ubiquiti-em-lote-via-ssh/
Show!
Meus parabéns.
Ótimo passo a passo!!
posso usar este para mikrotik também? sei que existem vários mais achei este seu muito bem explicado e funcional.
sou novo no ramo, gostaria de saber se consigo atualizar vários rádios com o ip defull?
Muito bom.
Unico problema (que é o meu), eu tenho 120 rádios. cada um tem o mesmo usuarios mas senahs diferentes.
Vc sabe como fazer pra eu nao precisar fazer um script pra cada dispositivo?
Será que é possível realizar alterações na programação do radio, por exemplo na guia wireless?
É possível!