MAL - Memória Auxiliar do Lutieri

segunda-feira, fevereiro 25, 2008

Prompt retorna o último retorno

Compilando algumas dicas de como personalizar o prompt resultou na seguinte função que retorna o último status de algum comando.

Segue o código para ser colocado no arquivo ~/.bashrc

function exitstatus { EXITSTATUS="$?"
BOLD="\[\033[1m\]"
RED="\[\033[1;31m\]"
OFF="\[\033[m\]"

if [ "$EXITSTATUS" -eq "0" ]
then
PS1="${BOLD}\u@\h:\w [${EXITSTATUS}] \$${OFF} "
else
PS1="${BOLD}\u@\h:\w${OFF} [${RED}${EXITSTATUS}${OFF}] \$ "
fi

PS2="${BOLD}>${OFF} "
}

PROMPT_COMMAND=exitstatus

Fontes:
http://blog.gnist.org/article.php?story=BashPromptWithExitStatus
http://doocy.net/archives/2004/11/19/add-dynamic-coloring-of-last-return-value-to-your-bash-shell-prompt/

Marcadores:

sexta-feira, fevereiro 22, 2008

Select dividido em grupos

<P>Which Web browser do you use most often?
<SELECT NAME=browser>
<OPTGROUP LABEL="Firefox">
<OPTION LABEL="2.0 or higher">
Firefox 2.0 or higher
</OPTION>
<OPTION LABEL="1.5.x">Firefox 1.5.x</OPTION>
<OPTION LABEL="1.0.x">Firefox 1.0.x</OPTION>
</OPTGROUP>
<OPTGROUP LABEL="Microsoft Internet Explorer">
<OPTION LABEL="7.0 or higher">
Microsoft Internet Explorer 7.0 or higher
</OPTION>
<OPTION LABEL="6.x">Microsoft Internet Explorer 6.x</OPTION>
<OPTION LABEL="5.x">Microsoft Internet Explorer 5.x</OPTION>
<OPTION LABEL="4.x">Microsoft Internet Explorer 4.x</OPTION>
</OPTGROUP>
<OPTGROUP LABEL="Opera">
<OPTION LABEL="9.0 or higher">Opera 9.0 or higher</OPTION>
<OPTION LABEL="8.x">Opera 8.x</OPTION>
<OPTION LABEL="7.x">Opera 7.x</OPTION>
</OPTGROUP>
<OPTION>Safari</OPTION>
<OPTION>Other</OPTION>
</SELECT>
</P>

Referência: http://htmlhelp.com/reference/html40/forms/optgroup.html

Marcadores:

knock & PF

Estranho não ter encontrado esse assunto nas minhas buscas. Por isso coloco aqui. Acredito que vai ser útil pra mais alguém.

Chovem resultados se você quiser implementar essa solução no Linux com Iptables. Logo não vou falar dela aqui e nem vou explicar o funcionamento do knock. Pra isso existe o nome querido amigo Google. Google é uma velha expressão usada no interior da África que quer dizer: Pau pra toda obra!

heuahea não sei de onde eu tirei a bobagem acima! :-)

A instalação é feita normalmente através do ports.

No linux é usado o comando "iptables -A" para criar a regra de acesso no momento em que o camarada acerta as batidas para entrar. Porém pra fazer a mesma coisa no FreeBSD utilizando PF seria necessária um pequena enjambraçãozinha. Prefire partir por um caminho mais fácil.

Criei uma tabela qualquer:

table <knock>

E na seção de filtros criei uma regra liberando os endereços dessa tabela para acessar o SSH.

pass in on $ext_if proto tcp from <knock> to $ext_ip port 22 keep state

Bom, a tabela está vazia mas pode ser alterada usando o comando pfctl. Para isso o arquivo knock.conf ficou com os seguintes parâmetros command:

command = /sbin/pfctl -t knock -T add %IP%

O comando acima obviamente adiciona o IP do ser humano a tabela knock.

command = /sbin/pfctl -t knock -T delete %IP%

E o comando acima mais do que obviamente remove esse IP da tabela knock.

Caso tenha preguiça de executar a seqüencia para remover o IP, é o meu caso, crie uma entrada no crontab algo assim:

#Limpar tabela knock
0 3 * * * root pfctl -t knock -T flush 2>&1


Todo dia as 3 da manhã ele limpa a tabela knock e não preciso me preocupar.

É simples. Talvez seja esse o motivo de não ter encontrado nada a respeito. Se bem que em linux também é fácil e tem um monte de artigos sobre isso... bom.. vai saber..

Algo que me deixou um pouco triste foi que deve ser escolhida a interface ao invés do IP ao qual fazer o bind. Comento a minha tristeza pois tenho mais de um IP na mesma interface. Aí não é possível escolher qual IP será usado.

Marcadores: ,

terça-feira, fevereiro 12, 2008

Substituições no Vim

Antes:

001 Brasil
002 Afeganistão
003 Albânia
004 Argélia
005 Armênia
006 Bangladesh
007 Belize
008 Botsuana
009 Burkina-Fasso
010 Burundi
011 Butão
012 Cabo Verde

Comando de replace do VIM:

:%s/^\(\w\+\)\(\s\)\(.*\)/Insert\ INTO\ \`paises\`\ (\`codigo\`\,\ \`descricao\`) VALUES\ (\'\1\'\,\ \'\3\'\)\;/g

Depois:

Insert INTO `paises` (`codigo`, `descricao`) VALUES ('001', 'Brasil');
Insert INTO `paises` (`codigo`, `descricao`) VALUES ('002', 'Afeganistão');
Insert INTO `paises` (`codigo`, `descricao`) VALUES ('003', 'Albânia');
Insert INTO `paises` (`codigo`, `descricao`) VALUES ('004', 'Argélia');
Insert INTO `paises` (`codigo`, `descricao`) VALUES ('005', 'Armênia');
Insert INTO `paises` (`codigo`, `descricao`) VALUES ('006', 'Bangladesh');
Insert INTO `paises` (`codigo`, `descricao`) VALUES ('007', 'Belize');
Insert INTO `paises` (`codigo`, `descricao`) VALUES ('008', 'Botsuana');
Insert INTO `paises` (`codigo`, `descricao`) VALUES ('009', 'Burkina-Fasso');
Insert INTO `paises` (`codigo`, `descricao`) VALUES ('010', 'Burundi');
Insert INTO `paises` (`codigo`, `descricao`) VALUES ('011', 'Butão');
Insert INTO `paises` (`codigo`, `descricao`) VALUES ('012', 'Cabo Verde');

Link de consulta: http://www.softpanorama.org/Editors/Vimorama/vim_regular_expressions.shtml

Pronto para importar no MySQL. :-)

Marcadores:

domingo, fevereiro 10, 2008

Manuais, man, apropos, whatis

Todos sabem consultar os manuais on-line do linux com o comando man. Até aí tudo bem. O problema que acontece freqüentemente comigo está relacionado a minha memória. Até aí nenhuma novidade também.

Acontece que eu sempre gosto de ver todas as opções que eu tenho disponíveis quando tenho que fazer escolhas. De repente existe uma que se encaixe melhor do que as que sabia que existiam. Por isso é da minha natureza fazer buscas genéricas afim de encontrar e me poder me deliciar com o maior número de opções disponíveis. :-) That's me!!

O comand whatis procura por por manuais com o nome informado.
Exemplo:

# whatis ldif
ldif (5) - LDAP Data Interchange Format

Já o comando apropos busca na base de dados do whatis por manuais contendo a palavra informada. Mesmo que seja na descrição do manual.
Exemplo:

# apropos ldif
ldif (5) - LDAP Data Interchange Format
slapcat (8) - SLAPD database to LDIF utility
slapd-ldif (5) - LDIF backend to slapd
slapindex (8) - SLAPD index to LDIF utility

man -k faz a mesma coisa que o comando apropos
man -f faz a mesma coisa que o comando whatis

Porém essa base de dados do whatis NÃO é criada automaticamente e cabe ao administrador do sistema fazer isso quando se sentir confortável. Para isso execute:

makewhatis

para mais informações vai se acostumando e lendo o manual do makewhatis.

Marcadores:

sexta-feira, fevereiro 01, 2008

Dicas Vim

Lista da dicas que eu mais esqueco:

:set list -> mostra caracteres não imprimíveis como tabs, fins de linha
:.,$-1s/foo/bar/ -> substitui a partir da linha atual até o final do arquivo - 1

ggvG= -> auto-identa a coisa toda
:r file -> adiciona file dentro do arquivo atual
D -> Apaga a partir da posicao atual ate o final da linha

:e! -> Recarrega o arquivo, equivalente a sair sem salvar e abrir o mesmo arquivo de novo

mx -> Cria uma marca chamada x
`x -> Vai para a marca chamda x

:set nowrap -> Não quebra a linha se a tela for menor
:set ignorecase -> Ignora maiúscula/minúsculas durante a busca

Vou juntar aqui algumas dicas interessantes do Vim. Pode ser criado o arquivo ~/.vimrc com os seguintes comandos:

"""Minhas opções

""mostra INSERT OU REPLACE
set showmode

""highlight searches
:set hlsearch

""no incremental search
:set noincsearch


""Syntaxe
syntax on

""Sai apertando ESC 4x
:nmap <esc><esc><esc><esc> :q!<cr>

""Copiar e colar incrementando:
""http://vim.sourceforge.net/tips/tip.php?tip_id=30
:map <F3> mnYP`n<c-a>

""Comentar linhas
:map <F4> i;<Esc>j

""Indentar todo documento
:nmap <F5> ggvG=

"Roda make
:nmap <F9> :!clear;make <cr>

""Auto-identar sempre
filetype indent on
set cindent

""Especie de barra de status
set ruler

"" Padroes Vim
set nocompatible

"" Viminfo(Remember informations)
"" http://www.vim.org/htmldoc/usr_21.html#21.3
set viminfo='20,\"500

""Nice status bar
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [X=%04v,Y=%04l][%p%%]\ [LEN=%L]
set laststatus=2




Remover ^M(control + M) dos arquivos. O comando script geralmente coloca esse lixo nos arquivos.

:s/Ctrl+V <enter>//g

O Ctrl+V seguido do ENTER vai gerar o caracter ^M

ou

tr -d \\r < dosfile > NewFile
Links sobre o assunto:

http://www.fug.com.br/historico/html/freebsd/2006-12/msg00590.html
http://www.freebsddiary.org/control-m.php

Marcadores:



Chat with Lutieri G. B.

Subscribe in a reader