Vocabulário em inglês – Shell Script – com google Translator

Share Button

Criei um novo script em shell que lê um aquivo texto contendo palavras na língua inglesa e fala a palavra em inglês e português traduzindo simultaneamente, e mostra no terminal a palavra falada e sua tradução. Bem legal para para aprender algumas palavras novas.

Para que o script funcione é necessário que o WGET e MPLAYER estejam instalados previamente.

Basta criar um aquivo com o nome tradutor.sh inserir o cogido abaixo e alterar a permissão do arquivo com chmod 777 tradutor.sh

Para executar utilize ./tradutor.sh arquivo_com_palavras.txt

código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
for i in $(cat $1) 
do
 
word=$i
 
# variavel (ptrad) pega a variavel (word) já traduzida pelo google
ptrad=$(wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$word&sl=auto&tl=pt" | sed 's/\[\[\[\"//' | cut -d \" -f 1) > /dev/null
clear
	echo "#############################################"
	echo " "
	echo "           $word -- $ptrad "
	echo " "
	echo "#############################################"
		#da play usando o google tts na variavel (word) usando a linguan inglesa EN
		#da play usando o google tts na variavel (word) usando a linguan portuguesa PT
		mplayer -user-agent Mozilla "http://translate.google.com/translate_tts?ie=UTF-8&tl=en&q=$word" "http://translate.google.com/translate_tts?ie=UTF-8&tl=pt&q=$ptrad" > /dev/null
 
done

Mikrotik – Gerando LOGs, por trafego das interfaces WLAN

Share Button

Esse script gera LOGs de todas as interfaces WLANs conforme a utilização de banda de cada cartão. No script é setado a velocidade máxima da interface, caso esse valor seja ultrapassado, é gerado um log do sistema avisando que essa interface esta excedendo uma certa taxa de trafego, o log também pode ser enviado via SYSLOG.

No meu caso configurei o scheduler para executar o script em 30 em 30minutos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
:global traffic;
:global trafficlimit;
:global interface;
:global type;
:global name;
:global ip;
:global ssid;
:global band
:global tx;
:for i from="1" to=10 do={:set interface "wlan$i"; :set type [/interface wireless get $interface band];
<strong>#Nas próximas linhas é necessário configurar a velocidade máxima da interface, caso essa velocidade seja ultrapassada o log é gerado.</strong>
:if ($type = "2.4ghz-b") do={:set trafficlimit 2000000}; <strong>#velocidade dos cartões em 8002.11b</strong>
:if ($type = "2.4ghz-b/g") do={:set trafficlimit 4000000};<strong> #velocidade dos cartões em 8002.11b/g</strong>
:if ($type = "5ghz") do={:set trafficlimit 8000000}; <strong>#velocidade dos cartões em 8002.11a</strong>
/interface monitor-traffic [/interface find name=$interface] once do={:set traffic (tx-bits-per-second);
:if ($traffic > $trafficlimit) do={  :set name [/system identity get name];
:set ip [/ip address get 0 address];
:set ssid [/in wi get $interface ssid];
:set  band [/in wi get $interface band;
:set tx ($traffic/1000)];
:log info "Nome=$name  IP=$ip  SSID=$ssid  interface=$interface  band=$band  Tx-kbps=$tx" }}};

Basta configurar o scheduler para executar o script de tempos em tempos, e acompanhar os resultados com o comando;

/log print

O resultado já é convertido em kbps, algo como

Nome=Nome-da-MK  IP=10.0.0.1  SSID=REDE-TESTE  interface=wlan1  band=2.4ghz-b  Tx-kbps=2468

;

Novo Script para controle de ACKs

Share Button

Novo Script para controle de ACKs, este faz uma media utilizando (media, mediana) para verificar a media de nivel de ACK e desconectar os clientes com ACK acima dessa media.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#SCRIPT DE CONTROLE DE ACK
:global interface 8; <strong>#Definir aqui o numero de interfaces wireless existentes
 :global ack ;
 :global cont;
 :global res;
 :global valor;
 :global mac ;
 :global ack2;
 :global confirm;
 :global cliente;
 :set ack 0;
 :set cont 0;
 :set res 0;
 :set valor 0;
 :set mac 0;
 :set ack2 0;
 :set confirm 0;
:set cliente 0;
:for j from=1 to=$interface step=1 do={
:foreach i in=[/interface wireless registration-table find interface="wlan$j"] do={
:set ack [/interface wireless registration-table get $i ack];
:set valor (valor+ack)
:set cont (cont+1)
}
 
:set res ((valor / cont)+10)
 
:foreach i in=[/interface wireless registration-table find interface="wlan$j"] do={
:set confirm ([/interface wireless registration-table get $i ack-timeout] > $res);
:if ($confirm=true) do={
:set cont (cont+1)
:set mac [/interface wireless registration-table get $i mac-address];
:set cliente [/interface wireless registration-table find mac-address=$mac];
:set ack2 [/interface wireless registration-table get $i ack-timeout];
:log info "Desconectado cliente da interface wlan$j seu mac : $mac o ack dele erra: $ack2 "
/interface wireless registration-table remove $cliente;
 
}
}
:set ack 0;
:set cont 0;
:set res 0;
:set valor 0;
:set mac 0;
:set ack2 0;
:set confirm 0;
:set cliente 0;
};

Mikrotik – Script para controle de ACK

Share Button

Esse Script controla o ACK de todas as interfaces Wireless, os ACKs devem ser menores que a variavel $ack, caso contrario o script derruba a conexão do cliente. Porem a queda é tão rapida que o cliente não percebe, e claro normalmente melhora o ACK do cliente..

1
2
3
4
5
6
7
8
9
10
11
12
13
:global ack 91; :global mac ; :global ack2; :global confirm; :global cliente;
:log info "EXECUTANDO SCRIPT DE ACK"
:foreach i in=[/interface wireless registration-table find] do={
:set confirm ([/interface wireless registration-table get $i ack-timeout] > $ack);
:if ($confirm=true) do={
:set mac [/interface wireless registration-table get $i mac-address];
:set cliente [/interface wireless registration-table find mac-address=$mac];
:set ack2 [/interface wireless registration-table get $i ack-timeout];
:log info "Desconectado cliente $mac o ack dele erra $ack2 "
/interface wireless registration-table remove $cliente;
};
 
};