Como fazer o script de duas informações com um comando?

1

Estou tentando obter mais de uma informação no commandLine com iwlist para obter o endereço Mac 'por exemplo' e ESSID. Eu tentei com

# iwlist wlan0 scan|egrep 'Address|ESSID'

mas eu não quero todas as linhas, mas apenas o resultado 'por exemplo'

# 00:13:33:83:36:F7
# Essid name

existe alguma maneira de conseguir isso? obrigado.

    
por Ibrahim 18.11.2012 / 18:46

1 resposta

2

Você já tentou o awk?

$> iwlist wlan0 scan | egrep 'Address|ESSID' | awk -F : '{ $1="";print}'
  00 24 7E 1F 7B 4D
  "YouShallNotPass!"

Com -F eu mudei o separador para dois pontos : e infelizmente peguei outros dois pontos do endereço, o que pode ser solucionado com a configuração do OFS, como abaixo:

$ iwlist wlan0 scan | grep Add | awk -F : '{OFS=":";$1="";print substr($0, 3) }'
00:24:7E:1F:7B:4D

Olhando para os resultados do 'iwlist ... scan', eles nem sempre são regulares. Eu devo mencionar duas outras linhas que você não vai entender assim:

  • Qualidade e sinal (sem dois pontos), use em vez disso
    • iwlist wlan0 scan | grep Quality | awk '{print $3}' | awk -F = '{print $2}' para sinal
    • iwlist wlan0 scan | grep Quality | awk '{print $1}' | awk -F = '{print $2}' para qualidade
  • Taxas de bits (bem, no meu caso, há três linhas com taxas de bits, e uma não tem dois pontos, apenas valores - obviamente, o script Awk acima a perde).

Eu não estou tão familiarizado com o que as taxas de bits exibem exatamente, por isso não saber o seu caso de uso para isso e se isso é diferente entre muitos drivers / cartões WiFi / outras pessoas carecem de informações para ajudar aqui.

Preste atenção em você - há outras opções, mas você reteve o que precisava e para que, então eu lhe dei uma solução simples (se longa) específica para o Awk. A mesma informação pode ser obtida via regex Perl ou até Bash.

    
por LIttle Ancient Forest Kami 18.11.2012 / 19:09