Banner colorido ssh

6

Eu gostaria de colorir meu banner ssh. Eu sei que posso executar assim:

Em /etc/profile , posso colocar:

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

Mas tenho algumas artes ASCII no banner com caracteres especiais. Existe alguma maneira de colorir isso sem escapar de todos os caracteres especiais na arte ASCII?

    
por Patryk 17.05.2013 / 13:57

2 respostas

9

Você pode querer dar uma olhada em toilet . O seguinte foi incorporado no banner de um dos servidores do meu laboratório:

Vocêpodeinstalá-loemsistemasbaseadosemDebiancom

sudoapt-getinstalltoilet

TOIletprintstextusinglargecharactersmadeofsmallercharacters.ItissimilarinmanywaystoFIGletwithadditionalfeaturessuchasUnicodehandling,colourfonts,filtersandvariousexportformats.

toiletfuncionaperfeitamentebemcomarteASCII:

Eu escrevi um pequeno script em Perl para destacar regexes específicos no texto. Se você usar . como o regex, ele irá colorir tudo em uma cor específica:

Oscript(use-hparaumapequenamensagemdeajuda):

#!/usr/bin/envperluseGetopt::Std;usestrict;useTerm::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;
}
    
por 17.05.2013 / 14:11
4

Com base na minha pesquisa neste outro U & Q & A intitulado: Caracteres imprimíveis não ASCII no banner sshd não é possível obter o recurso de banner do SSH para imprimir as seqüências de escape necessárias para colorir a saída. Isto é de fato por design por razões de segurança.

Portanto, é impossível imprimir um banner SSH dessa maneira.

    
por 13.07.2015 / 06:36