Brinquedo novo

19, dezembro, 2009

Até que fim chegou, um mês depois do pedido que fiz via internet chegou o meu arduino Duemilanove.

Funcionou beleza no ubuntu, só plugar e usar. No gentoo reconheceu depois de compilar o kernel com o ftdi, mais não consegui ainda instalar o gcc-avr no gentoo.

Programação , ,

Python + xml.dom – Editar um xml

15, dezembro, 2009

Ler e editar um xml Existente

Carregar o objeto.

>>> xml0 = xml.dom.minidom.parse(“c:\\teste\\novo.xml”)

Imprima na tela para ver se foi carregado mesmo e verifique o conteudo

>>> print xml0.toxml()
<?xml version=”1.0″ ?><usuarios><user id=”1″ login=”bruno-tuy”>Bruno Tuy</user><user id=”2″ login=”bruno.reis”>Bruno Reis</user><user id=”3″ login=”lucas.mendes”>Lucas Mendes</user><user id=”4″ login=”bruno”>_Bruno_</user></usuarios>

Aqui ele retornou desse jeito ai, sem quebra de linha e indentação, é a maneira ideal de salvar o xml pois assim o programa trabalha com ele perfeitamente bem, se o seu retornou um xml com quebras de linhas e indentação vai acontecer o seguinte, o python vai entender que o enter(\n) são filhos também, ai você vai ter que tratar isso.

Agora vamos ler os atributos da primeira tag do xml.

>>> print “Id: ” + xml0.firstChild.childNodes[0].getAttribute(“id”)
Id: 1
>>> print “Login: ” + xml0.firstChild.childNodes[0].getAttribute(“login”)
Login: bruno-tuy
>>> print “Nome: ” + xml0.firstChild.childNodes[0].firstChild.data
Nome: Bruno Tuy

Imprimir o atributo login da tag de id 2

>>> for filho in xml0.firstChild.getElementsByTagName(“user”):
if (filho.getAttribute(“id”) == “2″):
print filho.getAttribute(“login”)

bruno.reis

– getElementsByTagName(“user”) pode ser substituido por childNodes

Apagar alguma tag

>>> xml0.firstChild.removeChild( xml0.firstChild.childNodes[2] )
<DOM Element: user at 0×23c16c0>
>>> print xml0.toxml()
<?xml version=”1.0″ ?><usuarios><user id=”1″ login=”bruno-tuy”>Bruno Tuy</user><user id=”2″ login=”bruno.reis”>Bruno Reis</user><user id=”4″ login=”bruno”>_Bruno_</user></usuarios>

– Repare que o usuario com id 3 foi removido

Mudar atributos de uma tag

>>> xml0.firstChild.childNodes[0].setAttribute(“login”, “bruno.tuy”)
>>> print xml0.toxml()

<?xml version=”1.0″ ?><usuarios><user id=”1″ login=”bruno.tuy”>Bruno Tuy</user><user id=”2″ login=”bruno.reis”>Bruno Reis</user><user id=”4″ login=”bruno”>_Bruno_</user></usuarios>

– Veja que o atributo login da tag com id 1 foi alterado.

Mudar texto contido entre as tags

>>> xml0.firstChild.childNodes[2].firstChild.nodeValue = “Bruno”
>>> print xml0.toxml()
<?xml version=”1.0″ ?><usuarios><user id=”1″ login=”bruno.tuy”>Bruno Tuy</user><user id=”2″ login=”bruno.reis”>Bruno Reis</user><user id=”4″ login=”bruno”>Bruno</user></usuarios>

salvar tudo

>>> arq = file(“c:\\teste\\novo.xml”, “w”)
>>> xml0.writexml(arq)
>>> arq.close()

Programação ,

Criar xml com Python + xml.dom

14, dezembro, 2009

Post rapido para salvar algo que fiz hoje e preciso lembrar durante um bom tempo. Trabalhando com XML usando python.

Criando um XML.

>>> NewXml = xml.dom.minidom.Document()

Criando o elementos root do XML(TAGS).

>>> tag = NewXml.createElement(“lista”)
>>> NewXml.appendChild(tag)

Criando elementos do XML(TAGS).

>>> tag = NewXml.createElement(“usuario”)

Criando atributos

>>> tag.setAttribute(“login”, “burno.tuy”)
>>> tag.setAttribute(“senha”, “123456″)

Colocar um texto entre as tags.

>>> texto = NewXml.createTextNode(“Bruno Tuy”)
>>> tag.appendChild(texto)

Agora colocar o elemento criado no XML

>>> NewXml.firstChild.appendChild(tag)

Só pra confirmar é bom imprimir o xml

>>> print NewXml.toxml()

Agora vamos salvar

>>> arq = file(“c:\\teste\\novo.xml”, “w”)
>>> NewXml.writexml(arq)
>>> arq.close()

O arquivo já vai aparecer la salvo, mais meio complicado pra leitura, se quiser deixar ele mais legível pode usar alguns parâmetros no write. Exemplo:

>>> NewXml.writexml(arq, ” “, ” “, “\n”, “UTF-8″)

- Primeiro argumento o arquivo
- Segundo a indentação inicial.
- Terceiro a indentação adicional.
- Quarto argumento o que vai ser usado no final da tag.
- Quinto a codificação

Programação ,

Configurando MRTG para gerar grafico de uso de banda

2, setembro, 2009

Somente um lembrete para os passos da configuração…

Mais…

Servidor, linux , ,

Gravando bootloader ARDUINO

25, agosto, 2009

Minha primeira aventura com o arduino foi a gravação do boot dele, que pra variar comecou com problemas, inicialmente minha maquina não tinha a porta paralela, tive que descobrir o modulo responsavel por ela, depois da porta subir tento gravar e recebo esse erro de presente:

avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATMEGA168 is 1E 94 06
avrdude: AVR device not responding
***failed;
avrdude: verification error, first mismatch at byte 0×0000
0×00 != 0×07
avrdude: verification error; content mismatch

Lembrando, eu estou usando conexão icsp passada la pelo proprio site do arduino.

A solução para esse problema foi, retirar todos os resistores.
Realmente meu atmega não respondia ao arduino, mais isso por que?
A porta paralela de minha maquina por algum motivo esta trabalhando com voltagem abaixo do que deveria, o nivel alto dela segundo o meu multimetro esta em 3,45v. Essa voltagem já baixa com os resistores ficava direto em nivel logico 0 para o atmega então ele não recebia informação nenhuma =P

linux , ,

WebCam no Mplayer

24, agosto, 2009

Visualizar webcam pelo mplayer:

$ mplayer tv:// -tv driver=v4l2:fps=90:device=/dev/video0 -nosound

Desktop, linux , ,

Recuperando sistema

29, abril, 2009

Não sei como, fazendo o que, consegui deixar o sistema ruin. Não iniciava o xfce4, o linpus carregava normal, chegava a carregar o X, mais nada de xfce4. Tentei algumas coisas, coloquei o archlinux no pendrive pra dar boot e examinar os arquivos do Linpus, mais como não encontrei nada logo então como peguei o netbook antes de ontem vou restaurar o sistema mesmo.
Pensei que seria um pouco trabalhoso por não ter nenhum drive de dvd externo, mais é só dar boot com o dvd em qualquer outro computador que vai ter a opção gerar usb recovery, gerei um e consegui restaurar. Na verdade ele instala o sistema todo novamente.

linux ,

Maquina Linux Client do Active Diretory

4, fevereiro, 2009

Samba + Kerberos + LDAP + Windows AD

Partindo do ponto que samba, Kerberos e LDAP estão instalados. Vamos adicionar uma estação linux ao Active Directory da MS.

Arquivo de configuração do samba. /etc/smb.conf

[global]
;Nome do nosso client
netbios name = SRVTESTE
server string = Servidor de Testes
;Grupo de trabalho, deve ser o nome do dominio
workgroup = mw
security = ads
domain master = no
encrypt passwords = yes
;IP do servidor AD
password server = 192.168.0.250
wins server = 192.168.0.250
;Nome completo do Dominio
realm = SSA.MEDICWARE.COM.BR
passdb expand explicit = no
ldap ssl = no
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
log file = /var/log/samba/log.%m
max log size = 50
debug level = 1
[geral]
comment = Arquivos
path = /srv/samba/geral
read only = no

Arquivo /etc/nsswitch.conf

passwd: files winbind
group: files winbind
shadow: files
hosts: files dns winbind

Arquivo de configuração do Kerberos

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = SSA.MEDICWARE.COM.BR
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24000
clockskew = 300
kdc_timesync = 1

[realms]
SSA.MEDICWARE.COM.BR = {
kdc = 192.168.0.250:88
}
MW = {
kdc = 192.168.0.250:88
}

Apos editar esses arquivos adicione no /etc/hosts o nome da maquina com o dominio completo.
Exemplo:

192.168.0.26 srvteste.ssa.medicware.com.br srvteste

Agora confirme o funcionamento correto do kerberos:

$ kinit administrador

Após digitar a senha correta ele não retorna mensagem nenhuma.

Adicionar maquina ao dominio:

$ net ads join -U Administrador

No arquivo de configuração do samba para ter seu compartilhamento acessado somente por determinados usuários adicione o parametro valid user.
Exemplo:

[HP1020]
comment = Impressora CIC
path = /var/spool/samba
print ok = yes
guest ok = no
valid users = @mw\suporte mw\administrador mw\marcel mw\elisson

Esse compartilhamento é acessado pelo grupo suporte do sominio mw, e pelos usuarios administrador, elisson e marcel.

Desktop, Servidor, linux ,

Restaurar o grub

7, novembro, 2008

A tempos atrás instalei o fedora aqui na maquina, e o grub dele ficou no lugar do grub do arch, hoje precisei restaurar o grub, colocar de volta o do arch. Mais quando executo o comando:

$ grub-install /dev/sda3

Ele da mensagem de sucesso, mais quando reinicio a maquina tudo do mesmo jeito.

Em pesquisas achei isso:

$ grub

Vai abrir o cli do grub.

grub> find /boot/grub/stage1
(hd0,2)
(hd0,5)

grub> root (hd0,2)
Filesystem type is ext2fs, partition type 0×83

grub> setup (hd0)
Checking if “/boot/grub/stage1″ exists… yes
Checking if “/boot/grub/stage2″ exists… yes
Checking if “/boot/grub/e2fs_stage1_5″ exists… yes
Running “embed /boot/grub/e2fs_stage1_5 (hd0)”… 16 sectors are embedded.
succeeded
Running “install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,2)/boot/grub/stage2
/boot/grub/menu.lst”… succeeded
Done.

grub> quit

$ reboot

Pronto, já esta funcionando como o esperado

Desktop, Servidor, linux ,

Colocando samba como cliente de Active Directory.

5, novembro, 2008

Vou explicar minha necessidade aqui: Precisei colocar um servidor de impressão na rede da empresa, e em nossa rede já existe um windows 2003 server gerenciando o active directory.

Aqui só irie abordar como fiz para colocar o samba pra funcionar no AD existente, somente a configuração do samba.

Sessão global do arquivo de configuração do samba:

[global]
netbios name = SRVPRINT
server string = Servidor de impressao
workgroup = seu_AD
security = domain

encrypt password = yes
password server = ip_do_seu_servidor_AD
username map = /etc/samba/smbusermap
wins server = servidor_wins

log file = /var/log/samba/log.%m
max log size = 50
debug level = 1

Agora você deve criar o arquivo /etc/samba/smbusermap
Nele vai estar associado os usuários do AD com usuário da sua maquina, vou mostrar como esta o meu:

admin = seu_ADadministrador
usr_geral = seu_AD*

Onde admin é usuário válido no meu servidor linux e seu_ADadministrador usuário válido do AD.

Agora você deve adicionar essa maquina na rede:

$ net join -U administrador

Vai pedir a senha do usuario administrador do AD e se tudo correr bem vai apresentar uma mensagem de sucesso.
Aqui aconteceu que o servidor AD não esta sendo encontrado pelo nome, então adicionei o mesmo no /etc/hosts:

192.168.0.250 SRVWIN

Apos fazer isso a maquina foi adicionada com sucesso.

Reinicie o seu samba e teste se as maquinas do AD acessam ele sem problema.

Servidor, linux ,