2012-12-20 4 views
2

SSH를 통해 pfSense/BSD 상자에 로그인하는 예상 스크립트가 있는데, Perl 스크립트에서 호출하여 출력을 Perl 스크립트 (RANCID 플러그인)로 다시 전달합니다.Perl에서 SSH 출력의 스트립 색상 세부 정보

현재 다음 출력이 표시됩니다.

+ spawn ssh -2 -x -l rancid my-pfsense-device.fqdn.com 
+ Password: 
+ Last login: Wed Dec 19 10:28:47 2012 from 89.21.224.35 
+ Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994 
+  The Regents of the University of California. All rights reserved. 
+ 
+ 
+ [0;1;33m[ [0;1;37m2.0.1-RELEASE [0;1;33m] [0;1;33m[ [0;1;37mrancid [0;1;[email protected] [0;1;37mmy-pfsense-device.fqdn.com [0;1;33m] [0;1;32m/home/rancid [0;1;33m([0;1;37m1 [0;1;33m) [0;1;36m [0;1;31m: [0;40;37m 
uname -a 
+ FreeBSD my-pfsense-device.fqdn.com 8.1-RELEASE-p6 FreeBSD 
8.1-RELEASE-p6 #0: Mon Dec 12 18:59:41 EST 2011 
[email protected]_8.0_pfSense_2.0-snaps.pfsense.org:/usr/obj./usr/pfSensesrc/src/sys/pfSense_wrap.8.i386 
i386 
+ [0;1;33m[ [0;1;37m2.0.1-RELEASE [0;1;33m] [0;1;33m[ [0;1;37mrancid [0;1;[email protected] [0;1;37mmy-pfsense-device.fqdn.com [0;1;33m] [0;1;32m/home/rancid [0;1;33m([0;1;37m2 [0;1;33m) [0;1;36m [0;1;31m: [0;40;37m 
cat /cf/conf/config.xml 
+ <?xml version="1.0"?> 
+ <pfsense> 

여기서 문제는 내 데스크톱에서 SSH를 통해 로그인 할 때 로그인 프롬프트가 나타나는 것입니다.

[2.0.1-RELEASE][[email protected]]/home/username(1): 

그러나 이것은 다양한 색상입니다. 위의 출력에서 ​​볼 수 있듯이 SSH에 모든 색상 정보가 전달되고 내 예상 스크립트로 출력됩니다. 위의 출력에서 ​​같은 줄이 보입니다.

[0;1;33m[ [0;1;37m2.0.1-RELEASE [0;1;33m] [0;1;33m[ [0;1;37musername [0;1;[email protected] [0;1;37mmy-pfsense-device.fqdn.com [0;1;33m] [0;1;32m/home/username [0;1;33m([0;1;37m1 [0;1;33m) [0;1;36m [0;1;31m: [0;40;37m 

스크립트를 만들 수있는 방법이 있습니까? 표준 색상 형식인가요? regex'ed인가, 아니면 색 정보를 무시하기 위해 내 SSH 클라이언트에서 옵션을 변경해야합니까?

답변

3

터미널이 색을 표시 할 수 있는지 여부는 TERM 환경 변수에 의해 결정됩니다. 일반적으로 xterm, linux 또는 screen (어쩌면 더 좋은 점은 접미어 -256color)으로 설정됩니다. 바라건대 상대방의 셸 (더 중요한 것은 셸 초기화 스크립트)은 TERM에주의를 기울여야하며 호출자 측의 터미널이 실제로 색상을 지원하는 경우에만 색을 사용하려고합니다.

ssh으로 전화하기 바로 전에 해당 변수를 설정할 수 있습니다. "대화 형이며 색상 기능이없는 단말기"로 설정하는 일반적인 값은 dumb입니다.