我正在尝试编写一个脚本,该脚本从.csv文件中获取IP地址并通过telnet设备以捕获“显示版本”命令输出。
到目前为止,我已经对此进行了编码:
#!/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
我需要完成for循环,以便它通过telnet连接到$ IP存储的IP,并保存“显示版本”输出。
我已经尝试过:
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
但这没用。
这是因为我无法使用bash并期望吗?
如果这是原因,那么如何将$ IP和$ NUMDISP作为变量发送到另一个Expect脚本中?(这就是为什么我认为它不同于另一个问题)
@thrig OP显然不觉得这是一个骗子,因为他们只是问了这个问题。
—
terdon
我提出了两个问题,我认为这与其他问题有所不同。
—
Cesar Alejandro Villegas Yepez '17
expect
可以读取CSV文件,就像我在unix.stackexchange.com/questions/350338/中所