Escrevi um pequeno script Bash, que usa spfquery
para verificar o registro SPF do e-mail do meu domínio, se ele passa todos os endereços IP dos provedores:
#!/bin/bash
# RED="\033[1;31m"
GREEN="\033[1;32m"
NOCOLOR="\033[0m"
email="[my email address]" # deleted for bots not to hound me
declare -a ips=("88.86.120.212" "88.86.120.223" "88.86.120.250" "88.86.120.213" "88.86.120.103" "46.234.104.23" "46.234.104.24")
echo -e "\n\n"
for ip in "${ips[@]}"
do
echo -e "${GREEN}$ip${NOCOLOR}"
spfquery -sender $email -ip $ip -helo kolbaba.stable.cz
echo -e "\n\n"
done
Observe, há RED
comentários. Isso porque eu gostaria que a mensagem resultante começasse com qualquer um destes:
fail
softfail
neutral
unknown
error
none
ou seja, não com:
pass
para colorir em vermelho.
Mas como fazer isso é um mistério para mim?
Com
zsh
em vez debash
:print -P
ativa a expansão imediata nos argumentos onde%F{color}
é para definir a cor de primeiro plano e%f
para redefini-la.Observe que o conteúdo das variáveis (
$color
e$ip
) também estão sujeitas a expansão de prompt (algo a ter em mente nos casos em que podem conter%
caracteres (ou mais se apromptsubst
opção estiver habilitada)) e expansão da sequência de escape (como\n
acima) .Outras formas de acessar as cores em
zsh
:a
colors
função autocarregável:o
%
sinalizador de expansão de parâmetro, que permite expansão imediata no conteúdo de uma variável:Veja também:
ou melhor
para garantir que o conteúdo
$text
seja gerado como está.zsh/curses
módulo usado para escrever aplicações pseudo-gráficas no terminal.Você gostaria de verificar o código de saída de spfquery e, em seguida, ter um if/else para ver se foi aprovado ou não. Algo assim:
Sua pergunta diz que você gostaria de colorir a saída gerada pelo
spfquery
comando . Isso não é obtido executando o comando e , em seguida, emitindo sequências de controle de mudança de cor. O que você está alcançando com as outras respostas é colorir apenas os endereços IP. Isso pode ser o que você deseja, mas não é o que sua pergunta pede.As ferramentas que você está procurando se é isso que você realmente deseja fazer são os vários utilitários de filtro de coloração, como István Karaszi's
colorize
, Radovan Garabík'sgrc
e Joakim Andersson'scolortail
. Configure-os para reconhecer as coisas apropriadas e, em seguida, canalize a saída de , ou mesmo o loopspfquery
inteiro , por meio deles.for
Leitura adicional