Expect 脚本从文件中读取并将所有内容放在同一行
Expect script reads from file and puts everything on the same line
Expect 脚本应该从文件中读取命令并通过 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"
任何帮助我分别发送每个命令的建议都会对我很有帮助,我将非常感谢你
您的命令文件可能有 \n
行结尾而不是 \r
set fid [open /home/toor/file.txt]
set records [split [read -nonewline $fid] "\n"]
# ..........................................^
close $fid
你的 lassign 命令没有用处。你可以 send "$record\r"
Expect 脚本应该从文件中读取命令并通过 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"
任何帮助我分别发送每个命令的建议都会对我很有帮助,我将非常感谢你
您的命令文件可能有 \n
行结尾而不是 \r
set fid [open /home/toor/file.txt]
set records [split [read -nonewline $fid] "\n"]
# ..........................................^
close $fid
你的 lassign 命令没有用处。你可以 send "$record\r"