Tôi đang cố mã hóa tập lệnh lấy địa chỉ IP từ tệp .csv và telnet thiết bị để bắt đầu ra lệnh "hiển thị phiên bản".
Cho đến nay tôi đã mã hóa điều này:
#!/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
Tôi cần hoàn thành vòng lặp for để nó kết nối qua telnet với IP được lưu trữ ở $ IP và lưu đầu ra "phiên bản hiển thị".
Tôi đã thử với điều này:
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
nhưng nó không hoạt động.
Đây có phải là nguyên nhân tôi không thể sử dụng bash và mong đợi?
Trong trường hợp đó là lý do .. làm cách nào tôi có thể gửi $ IP và $ NUMDISP dưới dạng một biến thành một tập lệnh kỳ vọng khác nhau? (đây là lý do tại sao tôi nghĩ nó khác với câu hỏi khác)
expect
có thể đọc tệp CSV, như tôi đã trình bày trong unix.stackexchange.com/questions/350338/ Kẻ