Baixe o app para aproveitar ainda mais
Prévia do material em texto
11 Comandos AWK que todo SysAdmin Linux precisa conhecer AWK é uma linguagem de programação orientada de dados concebido para processar dados baseados em texto, seja em arquivos ou fluxos de dados (Stream). É um exemplo de uma linguagem de programação que utiliza extensivamente o tipo de dados sequência de caracteres, matrizes associativas (ou seja, matrizes indexadas por sequências chave), e também expressões regulares. 11 Comandos AWK que você precisa conhecer (Alguns destes comandos precisam de privilégios elevados e precisam se precedidos de sudo) 1: Exibir uma lista dos comandos que você mais utiliza: 2: Exibir um bloco de texto com AWK Se você ficou um pouco perdido com a utilidade deste comando veja este exemplo: Para ver apenas as informações do processador do computador use-o assim: 3: Encontrar informação geográfica de um determinado endereço ip: history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head awk '/delimitador_inicial/,/delimitador_final/' arquivo.txt dmidecode | awk '/Processor Information/,/Part Number/' *Obs: Neste exemplo utilizamos o IP do google.com.br (172.217.29.78) 4: Remover entradas duplicadas de um arquivo sem reordenar as linhas na saída: *Algo muito útil para analisar log de sistema com excesso de linhas redundantes. 5: O comando irá obter a lista e criar as regras para você, se você quer que o comando bloqueie automaticamente adicione "| sh" no final do comando não esqueça de adicionar este comando no Cron para ser executado de hora em hora para ficar ainda melhor ;) *Obs: A BlackList é formada por uma lista compilada de todos os hosts maliciosos conhecidos no momento (botnets, spammers, bruteforcers, etc.) esta lista é atualizado a cada hora. lynx -dump http://www.ip-adress.com/ip_tracer/172.217.29.78 | awk '/IP country code/,/Local time in/' | tail -12 | sort | uniq -c | sort -n | awk {'print $2,$3,$4,$5,$6,$7,$8,$9'} awk '!x[$0]++' arquivo.txt wget -qO – http://infiltrated.net/blacklisted | awk '!/# | [a-z]/&&/./{print "iptables -A INPUT -s "$1" -j DROP"}' 6: Analisar o log de acesso do apache para os endereços IPs mais comuns: 7: Mostra um histograma dos momentos mais congestionados de um arquivo de log: tail -15000 access_log | awk '{print $1}' | sort | uniq -c | sort -n | tail cat /var/log/syslog | awk '{print substr($0,0,12)}' | uniq -c | sort -nr | awk '{printf("n%s ",$0) ; for (i = 0; i<$1 ; i++) {printf("*")};}' 8: Mostra rapidamente quais os usuários utilizaram o sistema recentemente: 9: Mostra o numero de conexões abertas por IP e as portas usadas: *Obs: Está linha de comando serve para executar em seu servidor, quando você achar que seu servidor está sob ataque. O comando vai imprimir uma lista de conexões abertas para o servidor e os classifica por quantidade. 10: Efetuar checagem dos seus e-mails não lidos do Gmail pela linha de comando: Obs: O problema deste comando é que se a sua senha tiver algum metacaracterecomo . ? * + ^ $ | [ ] { } ( ), você terá que "escapar" colocando "" antes de cada um deles, ou eles vão mudar todo o contexto do comando! ;) last | grep -v "^$" | awk '{ print $1 }' | sort -nr | uniq -c netstat -ntu | awk '{print $5}' | cut -d: -f1,2 | sort | uniq -c | sort -n curl -u username:password –silent "https://mail.google.com/mail/feed/atom” | tr -d 'n' | awk -F " '{for (i=2; i<=NF; i++) {print $i}}' | sed -n "s/(.*)</title.*name> (.*)</name>.*/2 – 1/p" 11: Listar o número e tipo de conexões de rede ativas: 12: Mostra o tamanho dos diretórios, os maiores primeiro e divididos entre ‘Kb, Mb e Gb’: netstat -ant | awk '{print $NF,$3,$4,$5}' | grep -v '[a-z]' | sort | uniq -c du -d 1 | sort -r -n | awk '{split("KB(s) MB(s) GB(s)",v); s=1; while($1>1024) {$1/=1024; s++} print int($1)" "v[s]"t"$2}'
Compartilhar