É possível enviar seqüências de escape de código de cores antes do login?

2

Estou tentando colorir o console e estou obtendo sucesso com o seguinte no .bash_profile :

do root
echo -en "\e]P7000000"
echo -en "\e]P0F0F0F0"
clear

O problema é que isso obviamente só será iniciado na primeira vez em que o usuário root efetuar login. Existe uma maneira de obter mingetty para definir automaticamente as cores apropriadas do console? As soluções propostas devem funcionar com RHEL6 e RHEL7 (ou seja, systemd), pois é isso que a maioria dos meus sistemas é. Note que isto é sobre colorir o console regular e não um emulador de terminal ou SSH (o antigo não é relevante e eu estou bem com este último sendo considerado um problema de configuração do usuário).

    
por Bratchley 05.07.2016 / 18:30

1 resposta

3

Você pode colocar literal caracteres de escape em /etc/issue , como sugerido em um comentário (a Red Hat faz isso, às vezes). Em um teste rápido, isso funciona, mas apenas colore o texto . O fundo está sem cor. No vi, o texto pode parecer

^[]P7000000^[]P0F0F0F0\S
Kernel \r on an \m

e o resultado é assim:

Sevocêlimparatela,ascorespreencherãoajanela,porexemplo,

^[]P7000000^[]P0F0F0F0^[[2J\SKernel\ronan\m

onde^[éocaractereASCIIescape,inseridonoviusandocontroleVseguidopelocaracteredeescape.

Amodificaçãode/etc/issueérelativamentesegura,contantoquevocêpossasshnamáquinarepará-laquandocometerumerro.mingettyimprimeessearquivoantesdologin;sshnãovailá.

Noentanto,vocêpodesertentadoamodificartambémo/etc/motd(afinal,essetambéméimpresso).Masissointroduzumproblema.Emseuscript,umavezquevocêsubstitui\eparaumcaracteredeescapeASCIIliteral

echo-en"\e]P7000000"
echo -en "\e]P0F0F0F0"

você conseguiria

escape ]P7000000
escape ]P0F0F0F0

O padrão para seqüências de escape (ECMA-48) diz que escape ] inicia um comando do sistema operacional e isso terminará com a < em> terminador de cadeia . Não há nenhum na implementação do console Linux. Você pode obter bloqueios de terminal interessantes (desconcertantes) ao se conectar com o ssh ao tentar imprimir /etc/motd com essas seqüências de escape finalizadas incorretamente usando xterm . Existe uma solução alternativa (para o xterm, pelo menos) no recurso brokenLinuxOSC .

Leitura adicional:

por 05.07.2016 / 22:56