Saya mencoba kode skrip yang mengambil alamat IP dari file .csv dan telnet perangkat untuk menangkap output "show version" perintah.
Sejauh ini saya telah mengode ini:
#!/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
Saya perlu menyelesaikan loop for sehingga terhubung melalui telnet ke IP yang disimpan di $ IP dan menyimpan output "show version".
Saya sudah mencoba ini:
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
tapi itu tidak berhasil.
Apakah ini penyebab saya tidak dapat menggunakan bash dan mengharapkan?
Jika itu alasannya .. bagaimana saya bisa mengirim $ IP dan $ NUMDISP sebagai variabel ke skrip harapan yang berbeda? (ini sebabnya saya pikir ini berbeda dari pertanyaan lain)
expect
dapat membaca file CSV, seperti yang saya perlihatkan di unix.stackexchange.com/questions/350338/…