#!/bin/bash
echo "início"
while /bin/true
do
echo "--------"
echo "Valor de A: "
read A
if [ $A -eq 0 ] ; then
echo "Fim de programa"
exit
fi
echo "Valor de B: "
read B
echo "Valor de C: "
read C
# rejeita se for string nula
if [ -z "$A" -o -z "$B" -o -z "$C" ] ; then
echo "Valor inválido, nulo"
continue
fi
# rejeita se valores forem iguais
if [ $A -eq $B -a $B -eq $C ] ; then
echo "Valores iguais não permitidos"
continue
fi
# ordena
if [ $B -gt $A ] ; then
SWAP=$A
A=$B
B=$SWAP
fi
if [ $C -gt $B ] ; then
SWAP=$B
B=$C
C=$SWAP
fi
if [ $B -gt $A ] ; then
SWAP=$A
A=$B
B=$SWAP
fi
echo "Valores ordenados"
echo "A: $A"
echo "B: $B"
echo "C: $C"
echo "--------"
done
prova de hoje
Agosto 28, 2007 às 23:54 (faculdade, linux, shell)
engraçado…
Agosto 28, 2007 às 23:16 (bsd, linux)
Tem umas coisas que se for parar pra pensar…
nat on $ext_if from $internal_net to ! $internal_net -> ($ext_if)
hmmm, um sinal de ->, bem intuitivo.
altq on vr0 hfsc bandwidth 128Kb queue { dflt_out1, local1 }
queue dflt_out1 bandwidth 5% hfsc(default)
queue local1 bandwidth 95%
Show de bola, às vezes usa {}, às vezes (), bem conciso.
E pra ficar power mesmo, um natd rodando em user space. Um natd para cada interface na qual se queira fazer NAT.
Voltando agora ao título do post, uma coisa que eu acho engraçada é que mais de uma vez na lista vi gente expressando que a sintaxe do iptables é bizarra, ou exótica (em oposição ao que se usa no FreeBSD).
Sei lá, eu procuro ser mente aberta, comecei a usar BSD por ouvir falar bem, principalmente para a parte de rede. Não me arrependo de ter começado a usá-lo em algumas aplicações, isso só aumentou meu conhecimento. Mas não posso concordar sobre a afirmações sobre a sintaxe dele quando comparadas com os trechos que citei.
fork bomb shell
Agosto 25, 2007 às 12:50 (linux, shell)
){
:& };:
-
) declaração de uma função de nome : -
:&
chamada da função : com um pipe para ela mesma e em segundo plano (|:&) - } fechamento da declaração da função
- : chamada da função :
Vamos escrever de uma outra forma para ficar mais fácil:
bomb(){ bomb|bomb& };bomb
ou:
bomb() {
bomb | bomb &
}
bomb
Resultado: uma função recursiva que causa um loop de fork de processos, que pode ocasionar uso excessivo de processamento e memória causando lentidão na máquina. Assustador, uma linha de comando destruidora em alguns casos. Mas existem maneiras de prevenir este tipo de situação
SEE ALSO
ulimit
man -a ulimit
processando opções da linha de comando
Agosto 22, 2007 às 1:00 (shell)
Uma boa forma de implementar tratamento de opções fornecidas na linha de comando em shell script é usando getopts:
usage() {
echo "Script para backup"
echo "$(basename $0) opções"
echo "-v verbose mode"
echo "-a backup total"
echo "-d backup apenas dos dados do servidor de arquivos"
echo "-m DATABASE backup da base DATABASE do mysql"
echo "-z DOMINIO backup do arquivo de zona do DOMINIO"
echo "-h descrição de uso"
exit
}
while getopts 'vadhm:z:' opcao
do
case ${opcao} in
v) VERBOSE="-v"
;;
a) WHATBAK="all"
;;
d) WHATBAK="dados"
;;
m) WHATBAK="mysql"
DBTARGET=${OPTARG}
;;
z) WHATBAK="zona"
ZNTARGET=${OPTARG}
;;
h) usage
;;
?) echo "Erro. Parâmetro incorreto."
usage
;;
esac
done
Na linha:
while getopts 'vadhm:z:' opcao
temos as opções que serão aceitas. Opções seguidas de : requerem argumento adicional (obtido via ${OPTARG}). E o ? trata os argumentos inválidos.
lab de redes
Agosto 16, 2007 às 0:33 (faculdade)
Excelente a aula de hoje. Protocolos ppp, x25, hdlc, lcp, ncp, cdp, configuração dos roteadores na camada 1, 2 e 3, troubleshotting para discovery da rede, opções avançadas do ping, explanação sobre problemas comuns na prática, problemas de fragmentação, TOS, …
Até passou um pouco do horário a aula, mas aulas desse nível valem a pena.
aula jaguara
Agosto 15, 2007 às 0:32 (faculdade)
Aula de Sistemas Operacionais II, sobre shell script. O professor poderia melhorar um pouco em alguns aspectos. Por um lado, em certas horas, tenta motivar ou mexer com a turma, para que o pessoal participe mais. Muito louvável. Porém, em outras horas usa de palavreado inadequado, que foge a seriedade que deveria ter. Também é comum ele dar bolas foras, falar coisa errada, e não parece muito receptivo a comentários.
Exemplos:
V="V="um quadrado com uma / atravessada"- código ASCII do espaço
- valores de retorno em shell
- pentelho
- udev
- alunos == jaguaras
A variável V teria um valor nulo. Mas da forma como passou no quadro, ficou parecendo que se usou apenas uma “aspas duplas”, ou seja, daria erro de sintaxe.
Alguma dose de imaginação é requerida, para imaginar que isso ai seria um espaço em branco.
Segundo o professor, não saber de cor o código ASCII de certo caracter == ser pedreiro. Falou que o código era 20, mas se esqueceu de falar que era 20 em hexadecimal.
Pelo menos no bash, sempre soube que um valor de retorno 0 corresponde a true, e um valor diferente disso significa false. Mas na aula o professor falou que quando era true retornava 1
A distância entre a cabeça de leitura/gravação e o prato de um HD é de “pentelhésimos”, ou menor que a largura de um pentelho.
É, parece que algumas distribuições começaram a usar udev né?
Falou que tava tendo problemas de fechamento do horário e turmas das aulas, devido aos alunos “jaguaras” que não tinham resolvido a matricula. Na verdade, a matéria seria dividida originalmente em duas turmas. Só que a instuição de ensino com muita seriedade e competência havia escalado um professor sem domínio da matéria para uma das turmas. O professor, sabiamente, declinou em lecionar a matéria, o que forçou a união da turma em uma única. Na ausência de uma definição de horário, e sem uma declaração oficial da instituição seríssima de ensino, o aluno que não conseguir ligar sua bola de cristal e adivinhar o que está acontecendo é tratado solenemente como “jaguara”.
crase x acento grave
Agosto 14, 2007 às 23:51 (faculdade, shell)
Crase é uma palavra grega que significa fusão. No caso, a fusão de um “a” com outro “a”. Comumente, da preposição “a” com o artigo “a”. Assim, crase é o fenômeno da língua, o fenômeno da fusão, que é assinalado com o acento grave.
Portanto a “crase“, tecnicamente, NÃO É o nome do acento. Na verdade, o acento chama-se grave.
…
Em aulas sobre shell script tem se o costume de se referir ao acento ` como crase, quando na verdade, tecnicamente, trata-se do acento grave.
ANALISTA OU GERENTE
Agosto 10, 2007 às 17:13 (TI)
Um homem caminha pela rua em um pequenino povoado, quando de repente percebe bem acima de sua cabeça, um balão de ar quente. No cesto desse b alão, há um senhor que lhe acena desesperadamente. Com curiosidade, ele se aproxima o máximo possível e o ouve com atenção. Por fim, o piloto consegue fazer com que o balão baixe mais um pouco, e lhe grita:
- “Desculpe, senhor, mas poderia ajudar-me? Prometi a um amigo que me encontraria com ele às duas da tarde, porém já são duas e meia e não sei onde me encontro!”.
O outro homem, com muita cortesia, respondeu:
- “Mas claro que posso ajudá-lo! Você se encontra em um balão de ar quente, flutuando a uns vinte metros acima da rua. Está a quarenta graus de latitude norte e a cinqüenta e oito graus de longitude oeste”.
O balonista escuta com atenção e depois pergunta-lhe com um sorriso:
- “Amigo, você é um analista?”
- “Sim senhor, ao seu dispor! Como conseguiu adivinhar?”
- “Porque tudo o que você me disse está tecnicamente correto, porém esta informação me é totalmente inútil, pois continuo perdido”.
O analista fica calado por alguns segundos e finalmente pergunta ao balonista:
- “E você, não seria por acaso um gerente?”
- “Sim, sou gerente de uma empresa. Como descobriu?”
- “Ah, foi muito fácil! Veja só: você não sabe onde está e nem para onde vai. Fez uma promessa da qual não tem a mínima idéia de como irá cumprir e ainda por cima espera que outra pessoa resolva o seu problema. Continua exatamente tão perdido quanto antes de me perguntar. Porém agora, por um estranho motivo, a culpa passou a ser minha!…
never delete?
Agosto 10, 2007 às 9:29 (Uncategorized)
Gmail antes do login:
“Lots of space
Over 2886.978371 megabytes (and counting) of free storage so you’ll never need to delete another message.”
depois de logar:
You are almost out of space for your Gmail account.
You can view our tips on reducing your email storage or purchase additional storage.