Logo Hardware.com.br
Mauriciodez
Mauriciodez Highlander Registrado
4.9K Mensagens 1.6K Curtidas

[Resolvido] Bash complicado

#1 Por Mauriciodez 21/04/2016 - 02:19
Pessoas .. tô com a seguinte questão , preciso pegar uns dados de um arquivo e fazer uma divisão

- local do arquivo /proc/net/dev

- preciso q ele pegue o valor da 1° coluna "bytes" de wlan0, depois de 1 segundo pegue o valor atualizado e diminua pelo 1° , escreva o valor
- preciso q ele pegue o valor da 2° coluna "bytes" de wlan0, depois de 1 segundo pegue o valor atualizado e diminua pelo 1° , escreva o valor

Anexo do post

e assim sucessivamente em loop infinito ... a idéia é retornar em arquivo a taxa de down e up, para eu poder dividir esses valores para fazer um "bar" no conky

OBS: como não achei um arquivo q já me mostrasse essa taxa, foi a única idéia q me passou pela cabeça, caso tenham conhecimento dese arquivo ( c é q ele existe ) ou alguma outra forma de me retornar em arquivo essas taxas tb tá valendo !!!

Anexos

Responder
andremachado
andremachado Highlander Registrado
3.3K Mensagens 2K Curtidas
#2 Por andremachado
21/04/2016 - 09:08
Para pegar o campo, você pode usar o comando cut. No entanto, esse arquivo tem vários espaços entre os valores, o que dificulta a utilização deste comando. Assim, precisamos substituir esses vários espaços por um único e depois pegar o valor. Note que, no entanto, o primeiro caractere é, também, um espaço, logo temos de pegar o terceiro campo, ao invés do segundo.

Portanto, podemos utilizar o seguinte comando para obter o valor desejado:

cat /proc/net/dev | grep wlan0 | tr -s '    ' ' ' | cut -d ' ' -f3


Deve ser possível fazer de uma maneira mais elegante usando sed ou awk.

Para fazer o que você quer, basta colocar esse valor em uma variável, como no exemplo abaixo:

bytes=$(cat /proc/net/dev | grep wlan0 | tr -s '    ' ' ' | cut -d ' ' -f3)


Deixo o resto do algoritmo como exercício big_green.png .
56 6F 63 EA 20 E9 20 6D 75 69 74 6F 20 63 75 72 69 6F 73 6F 2E 2E 2E
----------------------------------------
Acer Aspire E5-471-30DG (Casa)
Samsung Book 550XDA-K07 (Trabalho)
Mauriciodez
Mauriciodez Highlander Registrado
4.9K Mensagens 1.6K Curtidas
#3 Por Mauriciodez
21/04/2016 - 12:52
andremachado disse:
..


certo .. essa parada de deixar espaços únicos eu meio q já tinha entendido, aonde eu fiquei boiando mesmo foi como o comando faz a delimitação já q os números são incrementais .... tipo pegue a partir de tal espaço e retorne até tal espaço ... o primeiro retorno eu tenho o inicio dele fixo mas o final não ... já o segundo retorno eu não tenho nem o inicio nem o fim fixo ... consegue me ensinar isso ?

EDIT: matei a charada aqui velho .. tá tranquilo ... vou partir para a proxima fase do algoritimo


" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"
AcNeto
AcNeto Veterano Registrado
758 Mensagens 56 Curtidas
#4 Por AcNeto
23/04/2016 - 21:24
Eu uso o vnstat com o seguinte código abaixo.


background no
double_buffer yes

# -- Alignment -- #
# Alinhamento de texto, outros valores possíves estarão comentados
#alignment top_right # definir um ponto, depois pode ajustar no gap_x e gap_y
alignment top_middle
#alignment top_left
#alignment bottom_left
#alignment bottom_right
border_width 0
cpu_avg_samples 2
default_color white
default_outline_color white
default_shade_color white
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no

gap_x -790 # Movimenta para < direita / > esquerda
gap_y 810 # Altura < cima / > baixo

minimum_size 120 140

net_avg_samples 2
no_buffers yes
out_to_console no
out_to_stderr no
extra_newline no

own_window yes
own_window_type override
own_window_class Conky
own_window_transparent yes
own_window_argb_visual no
own_window_argb_value 51
own_window_title Chronograph
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
#own_window_colour 000000#

stippled_borders 0
update_interval 1.0
uppercase no
use_spacer none

show_graph_scale no
show_graph_range no

use_xft yes
xftalpha 1
xftfont URW Gothic Lixelsize=10:bold
override_utf8_locale yes
color0 white
color1 fbb203 #laranja
color2 6f5832 #marron
color3 6093c2 #azzurro
color4 0096ff #azzurro2
color5 ff4500 #Orange Red
color6 00FF00 #verde
color7 f7ff00 #amarelo
color8 b035b5 #roxo
color9 ff0309 #vermelho


TEXT
####### IMAGEM ############
${image ~/.conky/Imagens/Consumo/downUp1.png -p 30,20 -s 200x200}
##########################
${color 006400}${font URW Gothic Lixelsize=18:bold}DOWN: $alignr ${color9}UP:${color0}
${color FF4040}Ontem: ${color 006400}${execi 3600 vnstat -i eth0 | grep "yesterday" | awk '{print $2 $3}'}${alignr}> ${color FF0000}${execi 3600 vnstat -i eth0 | grep "yesterday" | awk '{print $5 $6}'}
#Ontem: ${execi 3600 vnstat | grep "yesterday" | awk '{print $2 $3}'}${alignr}: ${execi 3600 vnstat | grep "yesterday" | awk '{print $5 $6}'}
${color FF4040}Hoje: ${color 006400}${execi 300 vnstat | grep "today" | awk '{print $2 $3}'}${alignr}> ${color FF0000}${execi 300 vnstat | grep "today" | awk '{print $5 $6}'}
${color FF4040}Semana: ${color 006400}${execi 300 vnstat -w | grep "current week" | awk '{print $3 $4}'}${alignr}> ${color FF0000}${execi 300 vnstat -w | grep "current week" | awk '{print $6 $7}'}
${color FF4040}Mês: ${color 006400}${execi 3600 vnstat -m | grep $(LANG=en_US date "+%h&quot | awk '{print $3 $4}'}${alignr}> ${color FF0000}${execi 3600 vnstat -m | grep $(LANG=en_US date "+%h&quot | awk '{print $6 $7}'}
${color B8860B}Total ${time %B}:${alignr}${execi 300 vnstat -m | grep "`LC_ALL=C date +"%b '%y"`" | awk '{print $9 $10}'}
#${execpi 300 vnstat -m |mawk -v last=1 '/[A-Z][a-z][a-z].+12/ {test[++i]=$0} END{i=0; while (test[++i]); --i; for (j=i-last; j<=i; j++) {$0=test[j]; print "${color6}"$1, $2 ": ${color}"$3" "$4""$6" "$7""$9" "$10}'}
#${execpi 300 vnstat -m |mawk -v last=1 '/[A-Z][a-z][a-z].+12/ {test[++i]=$0} END{i=0; while (test[++i]); --i; for (j=i-last; j<=i; j++) {$0=test[j]; print $1, $2 ": "$3 $4" "$6 $7" "$9 $10}'}
${font PizzaDudeBullets:size=9.5}${color6}a${font DroidSans:size=11}${color3}${offset 5}IP Publico${offset 7} ${font DroidSansFallback:size=8.5}${alignr}${font DroidSans:size=8.3}${execi 1800 wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'}${font}
### Observações e futuras dúvidas.
# vnstat -m | grep "`LANG=en_US.UTF-8 date +"%b '%y"`" | awk '{print $6 $7}' Para o Mês.
#${color0}Mês: ${execi 300 vnstat -m | grep "`date +"%b '%y"`" | awk '{print $3 $4}'}${alignr}: ${execi 300 vnstat -m | grep "`date +"%b '%y"`" | awk '{print $6 $7}'}


Precisa instalar o vnstat

sudo aptitude install vnstat
sudo vnstat -u -i eth0
sudo vnstat -u -i wlan0

Cria um arquivo separado com esse exemplo e no arquivo que chama o conky inclui esse novo, só para teste, também tem a possibilidade de visualizar em php no navegador todo o trafego com o vnstat.
Depois que terminar o teu mostra o resultado, sempre gosto de coisa nova no conky hehe

https://meocloud.pt/link/b79a53ea-450f-4944-a2a0-8ca7bf436ac9/conkyRede.png/
Placa Gigabyte 970-ud3p / Cooler Master TX3 Evo / Placa de vídeo GTX 750Ti
Processador FX 8320 / 16 GB Corsair Vengeance 1600
SSD OCZ 128 Sistemas (Win7 64/Mint 64)
HD 2 TB, 2 TB WD / HD 3 TB Seagate
Fonte corsair 520W /Dual Monitor LG 23"
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal