Eu me apresento, meu nome é Andrey.
A tarefa inicial foi a seguinte - criar centenas de configurações para o Mikrotik, elevar um certificado em cada ovpn e depois fazer upload de configurações para centenas de configurações do Mikrotik, além de certificados e uma chave.
A senha para cada certificado é exclusiva. Criar centenas de configurações com suas próprias mãos não faz sentido, e amanhã elas pedirão para você fazer novas ou você gostaria de fazer outras alterações no Mikrotik.
O que eu queria alcançar:
- crie automaticamente muitos scripts;
- enviá-los automaticamente para o equipamento necessário;
- para garantir que eles funcionaram sem erros ou para saber que a configuração não foi executada corretamente.
Usando Bash e FTP, tudo deu certo.
Pouco de teoriaNo RouterOS, você pode executar scripts automaticamente (seu arquivo de script deve se parecer com name.auto.rsc). Após o upload do arquivo via FTP para o roteador, ele será executado automaticamente, como no comando '/ import' (este método funciona apenas com FTP).
Assim que o arquivo é baixado, ele é executado automaticamente. As informações sobre o sucesso da execução do comando são registradas no nome .auto.log
AWK - Linguagem de script do tipo C para análise e processamento linha a linha de um fluxo de entrada (por exemplo, um arquivo de texto) de acordo com padrões especificados (expressões regulares). Pode ser usado em scripts de linha de comando.
O Expect é uma ferramenta de automação e teste do Unix escrita por Don Libes como uma extensão da linguagem de script Tcl para aplicativos interativos como telnet, ftp, passwd, fsck, rlogin, tip, ssh e outros.
Para começar, criei 3 arquivos:
- O arquivo List.txt nele registrava o nome das conexões OVPN (no meu caso, o nome da loja) e a senha da chave (separada por tabulações);
- sh1.sh - arquivo bash com comando de análise linha a linha no list.txt + pipeline;
- sh2.sh - Um arquivo bash que, usando Echo e variáveis, cria um arquivo de configuração e grava nossas configurações nele.
E assim:
vi list.txt gamazin1 pass1 gamazin2 pass2 gamazin3 pass3
vi sh1.sh
vi sh2.sh
Uma ressalva!
$ 1.crt e $ 1.key os criaram antecipadamente usando o mesmo list.txt, por isso o nome do arquivo também é o nome da loja.
Criou cem configurações. Agora precisamos enviá-los usando o mesmo AWK e Expect + FTP.
Crie 4 arquivos:
- Arquivo List2.txt - nele armazenamos dados IP do Mikrotik | Entrar | Senha | O nome da loja. Separado por tabulação.
- newsh1.sh - arquivo bash com um comando de análise linha a linha no list2.txt + pipeline
- newsh2.sh - Envia nossos desejos via FTP usando o pacote Expect, que responde às solicitações do console.
- $ 1.auto.rsc - o arquivo de configuração no meu caso, eles foram criados a partir da variável $ 1, que era o nome da loja no script anterior. Exemplo gamazin1.auto.rsc.
vi list2.txt 192.168.1.1 admin password1 gamazin1 192.168.2.1 admin password2 gamazin2 192.168.3.1 admin password3 gamazin3
vi newsh1.sh
Sudo apt-get install expect vi newsh2.sh
Nota
Primeiro, enviamos os certificados com a chave e, em seguida, apenas a configuração (se você fizer na ordem inversa, começará a jurar que não existem tais certificados).
Configura e certificados espalhados como bolos quentes. Devido ao nome .auto.rsc via FTP, o Mikrotik os direcionou automaticamente e nossas configurações foram aplicadas.
Queremos saber que em todos os lugares tudo é super, usando a configuração acima alteramos 1 linha.
colocar em obter send \"get $4.auto.log\n\" # .log .rsc
Nós baixamos todos os arquivos para casa e os classificamos, onde 0 bytes do tamanho do arquivo você tem problemas com o Mikrotik. Pelo nome do arquivo, você pode descobrir seu IP em nosso arquivo list2.txt. E em uma boa versão, abrindo o arquivo, você pode ver lá "Arquivo de script carregado e executado com sucesso".
Você também pode escrever scripts para esses arquivos, mas eu apenas precisei classificá-los por peso.
Também escrevi outro script e, depois de todas essas ações que fecham o FTP e vice-versa, é aberto via SSH. Apenas mudei o FTP para SSH para ...
Nós jogamos com FTP /ip service set ftp disabled=yes
Tentei colocar tudo de uma vez em 1 configuração, mas a remoção do arquivo no final do comando não deu resultado; não foi possível apagar o arquivo do qual recebi esse comando. Ainda havia nuances.
E no final ... felicidade! Você pode gerenciar listas individuais do Mikrotik ou de uma só vez, como desejar. Agora, abrindo e fechando o FTP, você pode enviar comandos e ter certeza de que eles foram concluídos. Mas minha opinião é mais conveniente que o FTP, o
SSH não caiu pela metade , pois você terá certeza de que tudo correu bem ao procurar na pasta de logs.
Neste artigo, mostrei as ferramentas, mas você pode pensar em como usá-las você mesmo ...
Eu fiz tudo no Ubuntu 16.04.
Sobre o auto.rsc no MikrotikAwkEsperar