Ожидать сценарий захвата мусора символов - необходимо удалить
У меня есть переключатель, который я пытаюсь записать, чтобы получить выходные данные от переключателя HP. Исходный компьютер - Ubuntu 18.04. Версия кода на коммутаторе - 16.04. Я попытался изменить настройки терминала на коммутаторе со значения по умолчанию vty100 на ANSI и ничего, но без разницы. Как мне избавиться от дополнительных специальных символов, показанных ниже?
set timeout 20
spawn ssh -l manager 192.168.10.10
expect "manager@192.168.10.10's password:"
send "admin\n"
expect "Press any key to continue"
send "j\n"
log_file -a hp.log
send "show vlan 10\n"
expect "labswitch#"
send "conf\n"
send "hostname newswitch\n"
expect "newswitch#"
send "exit\n"
expect "newswitch#"
send "logout\n"
У меня есть этот дополнительный вывод символов через каждую часть скрипта в файле журнала и консоли. Нужно удалить эти символы из вывода.??
^[[?6l^[[1;30r^[[?7h^[[2J^[[1;1H^[[1920;1920H^[[6n^[[1;1HYour previous successful login (as manager) was on 2019-03-07 $ from 192.168.10.4
^[[1;30r^[[30;1H^[[30;1H^[[2K^[[30;1H^[[?25h^[[30;1H^[[30;1labswitch# ^[[30;1H^[[30;11H^[[30;1H^[[?25h^[[30;11H^[[1;0H^$ Status and Counters - VLAN Information - VLAN 10
VLAN ID : 10
Name : Server_Lab
Status : Port-based
Voice : No
Jumbo : Yes
Private VLAN : none
Associated Primary VID : none
Associated Secondary VIDs : none
Port Information Mode Unknown VLAN Status
---------------- -------- ------------ ----------
11 Tagged Learn Up
12 Tagged Learn Up
^[[1;30r^[[30;1H^[[30;1H^[[2K^[[30;1H^[[?25h^[[30;1H^[[30;1H
1 ответ
Решение
Это ANSI Escape-последовательности
Вы должны быть в состоянии удалить их из файла журнала с помощью:
send "logout\r" ;# idiomatically, use \r to "hit enter"
log_file ;# turn off logging
# read the log file
set fid [open hp.log r]
set contents [read -nonewline $fid]
close $fid
# remove the escape sequences
regsub -all {\033\[(?:\?|\d+;)?\d+[[:alpha:]]} $contents {} stripped
# write the new contents
set fid [open hp.log w]
puts $fid $stripped
close $fid