Automatizando com Script-Expect

Publicado por AILTON DORIA (última atualização em 13/09/2012)

[ Hits: 14.054 ]

Homepage: https://www.vivaolinux.com.br/~ailton.doria

Download expect.sh




Este script automatiza configurações para switch, roteadores e servidores, isto vai da necessidade e da criatividade de cada um!

Graças a preguiça eu tive que correr atrás das informações, eu precisava adicionar algumas configurações de 250 devices (CISCO) na rede.

Obs.: O pacote expect deve estar instalado.

Se a distro for Debian: apt-get install expect -y

  



Esconder código-fonte

#!/bin/bash
# No campo Username & Password coloque sua senha do tacacs
# O script vai vai logar com seu usuario e sua senha para fazer as
# alterações descritas no script.
# voce deve descrever o arquivo onde estão os hosts e outro com os comandos a frente do script
# exemplo: script.sh host.txt comandos.txt

#INICIO

#Declarando as variaveis
USERNAME=usuario
PASSWORD=!@#@!#
HOST="$1"
CMD="$(cat $2)"

for var in $(cat $1);do

#Utilizando as variaveis declaradas acima para autenticar nos hosts

expect -c "
spawn telnet $var
expect \"*Username:*\"
send \"$USERNAME\r\"
expect \"*Password:*\"
send \"$PASSWORD\r\"
expect \"*#*\"
sleep 5
send \"$CMD\r\"
expect \"*#*\"
send \"end\r\"
expect \"*#*\"
send \"exit\r\"
interact
"
done
#FIM

Scripts recomendados

Backup do banco de dados Postgresql

Firewall Iptables

Script para rodar software Mr Bayes em paralelo

procurar palavras dentro de todos os ficheiros de sub directorias

rc.firewall


  

Comentários
[1] Comentário enviado por marcospaulovm em 17/07/2019 - 16:03h

Boa tarde, estou criando um script com expect, porém precisava inserir o comando de data e hora atual (`date +%d-%m-%Y`) e o expect não dá suporte a esse tipo de função. Gostaria de saber como posso tá inserindo essa informação em uma variável qualquer dentro do meu Shell

[2] Comentário enviado por ailton.doria em 23/07/2019 - 10:15h


Opa, Tudo bem? Desculpa demora.

Então, voce pode declarar a variavél antes de iniciar os script e aplicar ela no campo que voce precisar.

Segue abaixo um exemplo.


Declarei a variavel DATE com seu comendo.
#Declarando as variaveis
USERNAME=usuario
PASSWORD=!@#@!#
HOST="$1"
CMD="$(cat $2)"
DATE=$(date +%d-%m-%Y)


for var in $(cat $1);do

#Utilizando as variaveis declaradas acima para autenticar nos hosts

expect -c "
spawn telnet $var
expect \"*Username:*\"
send \"$USERNAME\r\"
expect \"*Password:*\"
send \"$PASSWORD\r\"
expect \"*#*\"
sleep 5
send \"$CMD\r\"
expect \"*#*\"
send \"end\r\"
expect \"*#*\"
send \"exit\r\"
interact
"
done
#FIM


Contribuir com comentário