Script SSH en linux con expect para copiar grabaciones de Cisco CCM

Cisco linux

Esta semana he tenido que realizar un script para copiar las grabaciones de un callmanager de cisco por ssh y volcarlas en un servidor, por SSH.

Los requisitos:

1º) conectarme por SSH al CCM
2º) Ejecutar unas instrucciones y esperar respuesta del CCM
3º) Eliminar las grabaciones, una vez pasadas al servidor

Nos ponemos manos a la obra…..


#cd /usr/local/bin
#nano copia.sh

Tenemos el fichero en blanco y pegamos …


#!/usr/bin/expect

set timeout -1
spawn ssh usuario@ip_del_ccm
expect "password:"
send "passwordn"
expect "admin:"
send "file get activelog /uccx/recordings/ n"
expect "Would you like to proceed "
send "yn"
expect "SFTP server IP: "
send "192.168.XXX.XXX n"
expect "SFTP server port "
send "22n"
expect "User ID: "
send "usuarioSSHn"
expect "Password:"
send "passwordSSHn"
expect "Download directory:"
send "/n"
expect "admin:"
send "utils uccx recordings purge 1000 [exec date +%m/%e/20%y] 23:59:59n"
expect "press"
send "Y"
expect "admin:"
send "quitn"
expect eof

Vamos por partes y lo explicamos…..

Primero, en nuestro debian, instalamos el paquete expect


#apt-get install expect

Y Ahora explicamos las lí­neas:


#!/usr/bin/expect
set timeout -1

Ponemos el timeout a -1 para que espere de manera indefinida…. cuando copiemos las grabaciones, se puede pasar más de 20 minutos copiando… y como no sabemos cuánto tiempo, pues que espere…

spawn ssh usuario@ip_del_ccm
–> nos conectamos por ssh
expect «password:»
–> esperamos a que nos pida el servidor el password
send «passwordn»
–> enviamos el password
expect «admin:»
–> ahora el callmanager espera a que pongamos la instrucción
send «file get activelog /uccx/recordings/ n»
–> activamos el enví­o de las grabaciones
expect «Would you like to proceed «
–> nos pide confirmación
send «yn»
–> pues eso, que Yes
expect «SFTP server IP: «
–> Esperamos a que nos pida el servidor SSH
send «192.168.XXX.XXX n»
–> Le enviamos la IP
expect «SFTP server port «
–> Nos pide el puerto
send «22n»
–> El 22
expect «User ID: «
–> nos pide el usuario
send «usuarioSSHn»
–> ahí­ que te va
expect «Password:»
–> el password
send «passwordSSHn»
–> lo enviamos
expect «Download directory:»
–> Directorio destino
send «/n»
–> es la raí­z del Servidor (/)
expect «admin:»
–> esperamos que acabe…. bastante rato; al final nos pide otro comando
send «utils uccx recordings purge 1000 [exec date +%m/%e/20%y] 23:59:59n»
–> Ahora borramos los del dí­a actual (hago la copia cada dí­a)
expect «press»
–> Pide que pulsemos «Y»
send «Y»
–> lo pulsamos ;-P
expect «admin:»
–> Ha acabado de borrar
send «quitn»
–> tarea finalizada :-)
expect eof

Enjoy the script

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.