2017-10-12 10 views
-2

정규 표현식을 사용하여 아래 출력에서 ​​"VLAN 관리"값을 추출하고 그 값을 내 스크립트의 뒷부분에서 사용할 변수에 저장해야합니다.여러 줄의 텍스트 패턴 뒤에 일치 문자열

set switch 100.10.100.100 
set Username "test" 
set Password "test" 

spawn ssh -o StrictHostKeyChecking=no [email protected]$switch 
expect "*assword: " 
send "$Password\r" 
expect *> 
send "enable\r" 
expect "*#" 
send "config\r" 
expect "(config)#" 
send "display something" 

출력은 다음과 같습니다

status    : Connected 
IP Address   : 2.2.2.2 
Mask    : 255.255.255.255 
Gateway   : 2.2.2.1 
Manage VLAN  : 456 
Manage priority : 0 
Option60   : No 
Switch    : Enable 

내가 어떻게 이것을 달성 할 수 있는가?

+0

당신은 출력을 억제하거나 출력을 유지하고 동시에 필요한 데이터를 추출 하시겠습니까? – RomanPerekhrest

+0

모든 출력을 억제하고 VLAN 필드 관리에서 값을 추출하고 해당 값을 변수에 할당하려고합니다. – n33raj116

+0

어떤 도구를 사용하고 있습니까? 나는 당신이 '기대하는'내부적 인 것을 원하지 않는다는 것을 확신 할 수 없다. 그렇지 않다면,'awk '/ Manage VLAN/{print $ 3}'이 값을 인쇄 할 것입니다. 'tclsh'에 vars를 저장하는 것에 대해서는 확신이 없지만 아마도'set val = \'awk .... \''일까요? 역학을 인식하지 못하면 명령 대체를 검색하여 읽으십시오. 행운을 빕니다. – shellter

답변

1

는 예를 참조하십시오

expect1.1> spawn bash -c "echo vlan : 1234" 
spawn bash -c echo vlan : 1234 
22902 
expect1.2> expect -re {vlan *: *([0-9]+)} 
vlan : 1234 
expect1.4> set vlanid $expect_out(1,string) 
1234 
expect1.5> puts $vlanid 
1234 
expect1.6>