期望脚本应从文件中读取命令,并通过telnet逐行发送命令,但它将所有内容置于同一行
我有带命令的文件,我的任务是连接到telnet,从文件中读取命令并发送。我必须对文件中的所有命令执行此操作。我准备了脚本,但是它将所有命令放在同一行上并作为一个发送。
这是带有命令的文件内容(仅仅是测试命令)
add chain=forward src-address=1.1.1.1 action=log;
add chain=forward src-address=1.1.1.1 action=log;
add chain=forward src-address=1.1.1.1 action=log;
add chain=forward src-address=2.2.2.2 action=log;
add chain=forward src-address=2.2.2.2 action=log;
add chain=forward src-address=2.2.2.2 action=log;
add chain=forward src-address=2.2.2.2 action=log;
add chain=forward src-address=2.2.2.2 action=log;
add chain=forward src-address=3.3.3.3 action=log;
add chain=forward src-address=3.3.3.3 action=log;
add chain=forward src-address=3.3.3.3 action=log;
这是我正在使用的脚本
set timeout 1
set fid [open /home/toor/file.txt]
set content [read $fid]
close $fid
###
start telnet and login
###
set records [split $content "\r"]
foreach record $records {
lassign $records \
commands
expect "> "
send "$commands\r"
}
sleep 1
expect "> "
send "quit\r"
任何可以帮助我分别发送每个命令的建议都会对我有帮助,我将非常感谢您
答案 0 :(得分:0)
您的命令文件可能有\n
行结尾而不是\r
set fid [open /home/toor/file.txt]
set records [split [read -nonewline $fid] "\n"]
# ..........................................^
close $fid
您的lassign命令没有作用。您可以send "$record\r"