![Tcl/Expect: 변수 값을 올바르게 설정할 수 없습니다.](https://linux55.com/image/83209/Tcl%2FExpect%3A%20%EB%B3%80%EC%88%98%20%EA%B0%92%EC%9D%84%20%EC%98%AC%EB%B0%94%EB%A5%B4%EA%B2%8C%20%EC%84%A4%EC%A0%95%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
라우터에서 IPSec 터널 세부 정보를 얻으려고 합니다. 그런 다음 IP 주소가 있는 행을 가져옵니다.
그래서 다음 코드가 있습니다.
send "show tunnel ipsec remote 10.10.10.10\r"
expect "local"
send "\r"
set outcome $expect_out(buffer)
set records [split $outcome "\n"]
foreach rec $records {
if {[regexp {\*.*$} $rec tunnel_name]} {
regsub -all "\r" $tunnel_name "" tunnel_name
regsub -all " " $tunnel_name "" tunnel_name
set NodeBInfo "Tunnel:\t $tunnel_name"
set command "show tunnel ipsec name $tunnel_name detail | include \"Remote IP\""
send "$command\r"
expect "local"
set outcome1 $expect_out(buffer)
set records1 [split $outcome1 "\n"]
foreach rec1 $records1 {
if {[regexp {Remote IP :.*$} $rec1 remote_ip]} {
regsub -all "\r" $remote_ip "" remote_ip
append NodeBInfo "\t$remote_ip"
}
}
unset outcome1
unset command
set command "show tunnel ipsec name $tunnel_name detail | include \"IRAC IP\""
send "$command\r"
expect "local"
set outcome2 $expect_out(buffer)
set records2 [split $outcome2 "\n"]
foreach rec2 $records2 {
if {[regexp {IRAC IP:.*$} $rec2 remote_ip2]} {
regsub -all "\r" $remote_ip "" remote_ip2
append NodeBInfo "\t$remote_ip2"
}
}
unset outcome2
unset command
puts "NodeBInfo $NodeBInfo\r"
}
}
NodeBInfo 변수의 값은 다음과 같을 것으로 예상됩니다.
NodeBInfo Tunnel: *ran_tunnel-10.10.10.10-4049 Remote IP : 10.10.10.10 Local IP : 20.20.20.20 IRAC IP: 40.40.40.40 / 255.255.255.0
그러나 나는 단지 다음을 얻습니다:
NodeBInfo Tunnel: *ran_tunnel-10.10.10.10-4049
스크립트의 전체 출력:
[local]Router#show tunnel ipsec remote 10.10.10.10
::::: Tunnel : *ran_tunnel-10.10.10.10-4049
Key : -
Remote IP : 10.10.10.10 Local IP : 20.20.20.20
Tnl Type : IPsec ASP Slot/Id : 6/1
State : Up Bound to : ipsec_traffic_ran_mb@iub_seg
Circuit ID: 12479 Internal Hdl: 255/32:511:63:31/0/2/12479
::::: Tunnel : *oam_tunnel-10.10.10.10-4bca
Key : -
Remote IP : 10.10.10.10 Local IP : 30.30.30.30
Tnl Type : IPsec ASP Slot/Id : 6/1
State : Up Bound to : ipsec_traffic_mb@om_seg
Circuit ID: 15340 Internal Hdl: 255/32:511:63:31/0/2/15340
[local]Router#
[local]Router#show tunnel ipsec name *ran_tunnel-10.10.10.10-4049 detail | include "Remote IP"
Remote IP : 10.10.10.10 Local IP : 20.20.20.20
[local]Router#NodeBInfo Tunnel: *ran_tunnel-10.10.10.10-4049
show tunnel ipsec name *ran_tunnel-10.10.10.10-4049 detail | include "IRAC IP"
IRAC IP: 40.40.40.40 / 255.255.255.0
[local]Router#show tunnel ipsec name *oam_tunnel-10.10.10.10-4bca detail | include "Remote IP"
Remote IP : 10.10.10.10 Local IP : 30.30.30.30
[local]Router#NodeBInfo Tunnel: *oam_tunnel-10.10.10.10-4bca
show tunnel ipsec name *oam_tunnel-10.10.10.10-4bca detail | include "IRAC IP"
IRAC IP: 50.50.50.50 / 255.255.255.0
[local]Router#
[local]Router#exit