다채로운 SSH 배너

다채로운 SSH 배너

내 SSH 배너에 색상을 지정하고 싶습니다. 나는 다음과 같이 할 수 있다는 것을 알고 있습니다.

다음을 입력 할 /etc/profile수 있습니다.

echo -e "\e[1;31m Colorful text"
echo -e "\e[0m Reset"

하지만 배너에 특수 문자가 포함된 ASCII 아트가 있습니다. ASCII 아트의 모든 특수 문자를 이스케이프 처리하지 않고 색상을 지정할 수 있는 방법이 있습니까?

답변1

한 번 살펴보고 싶을 수도 있습니다toilet. 내 연구실 서버 중 하나의 배너에 다음 콘텐츠가 있습니다.

여기에 이미지 설명을 입력하세요.

Debian 기반 시스템에 설치할 수 있습니다:

sudo apt-get install toilet

TOIlet은 작은 문자로 구성된 큰 문자를 사용하여 텍스트를 인쇄합니다. 여러 면에서 Figlet과 유사하지만 유니코드 처리, 색상 글꼴, 필터 및 다양한 내보내기 형식과 같은 추가 기능이 있습니다.

toiletASCII 아트와 완벽하게 작동합니다.

여기에 이미지 설명을 입력하세요.


나는 텍스트에서 특정 정규식을 강조하기 위해 작은 Perl 스크립트를 작성했습니다. 정규식을 사용하면 .모든 것이 특정 색상으로 표시됩니다.

여기에 이미지 설명을 입력하세요.

이 스크립트( -h작은 도움말 메시지용):

#!/usr/bin/env perl
use Getopt::Std;
use strict;
use Term::ANSIColor; 

my %opts;
getopts('hic:l:',\%opts);
    if ($opts{h}){
    print "Use -l to specify the letter(s) to highlight. To specify more than one patern use commas.\n -i makes the search case sensitive\n -c: comma separated list of colors\n";
    exit;
    }
my $case_sensitive=$opts{i}||undef;
my @color=("bold blue",'bold red', 'bold yellow', 'bold green', 'bold magenta', 'bold cyan', 'yellow on_magenta', 'bright_white on_red', 'bright_yellow on_red', 'white on_black');
if ($opts{c}) {
   @color=split(/,/,$opts{c});
}
my @patterns;
if($opts{l}){
     @patterns=split(/,/,$opts{l});
}
else{
    $patterns[0]='\*';
}
# Setting $| to non-zero forces a flush right away and after 
# every write or print on the currently selected output channel. 
$|=1;

while (my $line=<>) 
{ 
    for (my $c=0; $c<=$#patterns; $c++){
      if($case_sensitive){
        if($line=~/$patterns[$c]/){
        $line=~s/($patterns[$c])/color("$color[$c]").$1.color("reset")/ge; 
        }
      }
      else{
        if($line=~/$patterns[$c]/i){
          $line=~s/($patterns[$c])/color("$color[$c]").$1.color("reset")/ige; 
        }
      }
    }
    print STDOUT $line;
}

답변2

U&L의 다른 Q&A에 대한 내 연구에 따르면 다음과 같습니다.SSHD 배너에 ASCII가 아닌 인쇄 가능한 문자가 있습니다.출력 색상에 필요한 이스케이프 시퀀스를 인쇄하기 위해 SSH의 배너 도구를 얻는 것은 불가능합니다. 이는 실제로 보안상의 이유로 설계되었습니다.

따라서 이 방법으로는 SSH 배너를 인쇄할 수 없습니다.

관련 정보