J'essaye de coder un script qui prend les adresses IP d'un fichier .csv et telnet le périphérique pour attraper la sortie de la commande "show version".
Jusqu'à présent, j'ai codé ceci:
#!/bin/bash
#!/usr/bin/expect -f
FILE1=dispositivos.csv #file with IP's and device name
set Username "user" #this is the user for telnet connection.
set Password "this.is.the.pass" #pass for telnet connection.
NUMERODISP="$(wc -l $FILE1 | awk '{print $1}')" #this command counts number of devices (IP's) in the file as it is a .csv file, it only counts number of lines.
for i in `seq 2 $NUMERODISP`;
do
IP="$(awk -vnum="$i" 'NR == num { print $NF }' dispositivoss.csv)"
echo "$IP" #this takes the IP from last column from .csv file
done
J'ai besoin de compléter la boucle for pour qu'elle se connecte via telnet à l'IP stockée à $ IP et enregistre la sortie "show version".
J'ai essayé avec ça:
for i in `seq 2 $NUMERODISP`;
do
IP="$(awk -vnum="$i" 'NR == num { print $NF }' dispositivoss.csv)"
send "telnet $IP\r"
expect "Username:"
send "$Username\r"
expect "Password: "
send "$Password\r"
expect "*>"
send "show version\r"
log_file -noappend SN_$IP.dat;
expect -ex "--More--" {send -- " "; exp_continue}
expect "*>"
log_file;
done
mais ça n'a pas marché.
Est-ce que je ne peux pas utiliser bash et attendre?
Dans le cas où c'est la raison .. comment puis-je envoyer $ IP et $ NUMDISP en tant que variable dans un script d'attente différent? (c'est pourquoi je pense que c'est différent de l'autre question)
expect
pouvez lire un fichier CSV, comme je l'ai montré dans unix.stackexchange.com/questions/350338/…