Expect es una herramienta muy útil para integrar esos programas interactivos, que se ejecutan en una shell, con nuestros o script de administración o páginas web o procesos por lotes.
Para un ejemplo supondremos que deseamos crear una vlan en varios switch cisco. La ip del switch estará en un archivo que contiene una lista de ips, también al scripts se pasara como parámetros el usuario y contraseña común a cada switch.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#!/usr/bin/expect -f set f [open "/home/scripts/switchs.txt"] set usuario [lindex $argv 0] set password [lindex $argv 1] set hosts [split [read $f] "\n"] close $f foreach host $hosts { spawn ssh $usuario@$host expect { "no)?" { send "yes\r" expect "assword:" } "assword:" } send $password\r" expect "#" send "conf term\r" expect "#" send "vlan 96\r" expect "#" send "name vlan96\r" expect "#" send "end\r" expect "#" send "wr\r" expect "#" send "exit\r" } |