calculo do modulo 10 em shellscript

07 March, 2005
function modulo10()
{
cont_char=$(echo -n "$1" | wc -c)
cont_multiplicador=1

while [ $cont_char -ne 0 ]; do
char=$(echo $1 | cut -c $cont_char)
if [ $(($cont_multiplicador % 2)) == 1 ]; then
char_produto=$((char * 2))
else
char_produto=$((char * 1))
fi

if [ $char_produto -ge 10 ]; then
produto=$(($produto + $(echo $char_produto | cut -c 1) + $(echo $char_produto | cut -c 2)))
else
produto=$(($produto + $char_produto))
fi
cont_char=$(($cont_char - 1))
cont_multiplicador=$(($cont_multiplicador + 1))
done
if [ $(($produto % 10)) -eq 0 ]; then
echo "0"
else
echo $((10 - $(($produto % 10))))
fi
}

Niveis de execução de sistemas linux

07 March, 2005

O linux é capaz de operar em vários estados diferentes de sistema, cada um dos quais definido pelo conjunto de serviços disponibilizados ao usuário quando o respectivo estado está no controle do sistema. Oito desses niveis de execução estão disponiveis, embora tipicamente, apenas sete sejam de interesse do usuário. Por exemplo, os niveis de execução relevantes estão listados abaixo:

0 – Halt
1 – Modo monousuário
2 – Vazio (pode ser definido pelo usuário)
3 – Modo multiusuário sem janelas
4 – Vazio (pode ser definido pelo usuário)
5 – Modo multiusuário completo (com janelas)
6 – Reboot

- O nivel de execução default do sistema é configurado no arquivo /etc/inittab.
- O nivel de execução default do CentOS é o 3.
- Os niveis de execução 2 e 4 são usados, tipicamente, para configurações customizadas, as quais envolvem serviços que não são necessários nos niveis de execução 3 e 5 padrão.
- As designações de nivel de execução do CentOS ficam armazenadas em /etc/rc.d/ e cada nivel de execução possui sua própria pasta, e é numerada de acordo. Por exemplo, a pasta do nivel de execução 3 chama-se rc3.d.
- Se os serviços serão iniciados ou terminados, e em que ordem, dentro de cada nivel de execução, isso é determinado examinado os três primeiros caracteres de cada link simbolico começa com um S, este serviço será iniciado neste nivel de execução. Se começar com um K, ele será terminado. O inteiro de dois digitos que se segue ao primeiro caractere determina a ordem na qual este serviço será iniciado ou terminado. Quanto maior o numero, mais tarde seu destino será tratado.

configurar load balance PCC no MikroTik

07 March, 2005

ESTRUTURA:

LAN: 10.0.0.0/27
ISP1: 192.168.0.0/27
ISP2: 192.168.3.0/24

ENDERECOS:

/ip address
add address=10.0.0.1/27 broadcast=10.0.0.31 comment=”" disabled=no interface=LAN network=10.0.0.0

add address=192.168.0.10/27 broadcast=192.168.0.31 comment=”" disabled=no interface=ISP1 network=192.168.0.0

add address=192.168.3.1/24 broadcast=192.168.3.255 comment=”" disabled=no interface=ISP2 network=192.168.3.0

ROTAS:

/ip route
add check-gateway=ping comment=”Rota Saida GVT para Load Balance” disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.3.20 routing-mark=ISP2_traffic scope=30 target-scope=10

add check-gateway=ping comment=”Rota saida Velox para Load Balance” disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.0.1 routing-mark=ISP1_traffic scope=30 target-scope=10

add check-gateway=ping comment=”Rota saida Velox/GVT sem Load Balance” disabled=no distance=2 dst-address=0.0.0.0/0 gateway=192.168.0.1,192.168.3.20 scope=30 target-scope=10

NAT:

/ip firewall nat
add action=masquerade chain=srcnat comment=”" disabled=no out-interface=ISP1

add action=masquerade chain=srcnat comment=”" disabled=no out-interface=ISP2

MANGLE:

/ip firewall mangle
add action=mark-connection chain=input comment=”Marca Conexoes de entrada para que voltem pelo mesmo link” disabled=no in-interface=ISP1 new-connection-mark=ISP1_conn passthrough=yes

add action=mark-connection chain=input comment=”" disabled=no in-interface=ISP2 new-connection-mark=ISP2_conn passthrough=yes

add action=mark-connection chain=output comment=”Inicia o balance” connection-state=new disabled=no dst-address=!10.0.0.0/27 new-connection-mark=ISP1_conn passthrough=yes per-connection-classifier=both-addresses:2/0

add action=mark-connection chain=output comment=”" connection-state=new disabled=no dst-address=!10.0.0.0/27 new-connection-mark=ISP2_conn passthrough=yes per-connection-classifier=both-addresses:2/1

add action=mark-routing chain=output comment=”Retorna as conexoes marcadas no inicio, pelo mesmo link que entraram” connection-mark=ISP1_conn disabled=no new-routing-mark=ISP1_traffic passthrough=yes

add action=mark-routing chain=output comment=”" connection-mark=ISP2_conn disabled=no new-routing-mark=ISP2_traffic passthrough=yes

add action=mark-connection chain=prerouting comment=”Load Balance (PCC)” disabled=no dst-address-type=!local in-interface=LAN new-connection-mark=ISP1_conn passthrough=yes per-connection-classifier=both-addresses:2/0

add action=mark-connection chain=prerouting comment=”" disabled=no dst-address-type=!local in-interface=LAN new-connection-mark=ISP2_conn passthrough=yes per-connection-classifier=both-addresses:2/1

add action=mark-routing chain=prerouting comment=”Conexoes do load balance para as novas tabelas do PCC” connection-mark=ISP1_conn disabled=no in-interface=LAN new-routing-mark=ISP1_traffic passthrough=yes

add action=mark-routing chain=prerouting comment=”" connection-mark=ISP2_conn disabled=no in-interface=LAN new-routing-mark=ISP2_traffic passthrough=yes

transformar link padrão UUID em dispositivo no wheezy

07 March, 2005

Passei por um problema aqui com o novo Debian com comando df e outros que identificam o sistema de arquivos com um link simbólico
tipo UUID como /dev/disk/by-uuid/132a49f9-790a-49fb-3112-383e93187bf8 e isso é muito chato: a saída do comando é mais amplo e ilegível, difícil de decorar e o dispositivo atual não é mais identificado em alguns scripts.

a solução que encontrei foi criar o script abaixo e colocar ele em /etc/initramfs-tools/scripts/local-premount/rootdevice com o conteúdo:

 

#!/bin/sh
# transformar o link padrao do
# (UUID) no dispositivo normal.
set -e
[ "$1" = prereqs ] && exit 0
REALROOT=`readlink -f ${ROOT}`
[ "${REALROOT}" ] && echo "ROOT=${REALROOT}" >> /conf/param.conf
exit 0

 

colocar ele como executável:
chmod +x /etc/initramfs-tools/scripts/local-premount/rootdevice

e depois atualizar o initramfs:
update-initramfs -u

pronto tudo fica como era antes ;)…

HASH com senha – HMAC

07 March, 2005

Dias atrais precisei criar um algoritmo para verificar se um form realmente esta vindo de uma pagina especifica, usando MD5 para isso como hoje existem alguns sites com dicionarios inteiros de hash que facilita a vida dos malas, pensei em concatenar a string com outra que seria secreta para ficar diferente.

Mais para minha surpresa pesquisei no site do php sobre as funções de hash nativas e encontrei um recurso bem interessante chamado HMAC ( Hash-based Message Authentication Code ) que permite você adicionar um código de autenticação ao hash final.

Como ele é bem simples, irei colocar abaixo um codigo em php e mais abaixo a saida do codigo:

 

<?php

// varios  - md5, sha1, crc32 e ripemd160 com e sem senha em hmac

echo "<br><b>Algoritmo MD5</b><br>";

echo hash('md5','pedro','');

echo "<br>";

echo hash_hmac('md5','pedro','senha');

echo "<br>";

echo "<br><b>Algoritmo SHA1</b><br>";

echo hash('sha1','pedro','');

echo "<br>";

echo hash_hmac('sha1','pedro','senha');

echo "<br>";

echo "<br><b>Algoritmo crc32</b><br>";

echo hash('crc32','pedro','');

echo "<br>";

echo hash_hmac('crc32','pedro','senha');

echo "<br>";

echo "<br><b>Algoritmo ripemd160</b><br>";

echo hash('ripemd160','pedro','');

echo "<br>";

echo hash_hmac('ripemd160','pedro','senha');

echo "<br>";

?>

saida do codigo acima:

Algoritmo MD5
c6cc8094c2dc07b700ffcc36d64e2138
a1d018ffaf490f6a5b92742ef3ccd173
Algoritmo SHA1

4410d99cefe57ec2c2cdbd3f1d5cf862bb4fb6f8
5c82ffca9902349d22bf36ab133b40cbb2f2ea76
Algoritmo crc32

e86f00aa
0f6fd579
Algoritmo ripemd160

7755874530352e4d9fce481fbf92ac0e46581b16
a2a25fa6891b36bbd4761cf84ad01a7a0ceee458

Home ← Postagens antigas