quinta-feira, 9 de setembro de 2010

Edição de PDFs com OpenOffice 3

Não sendo uma novidade, fiquei agradavelmente surpreendido em descobrir que o OpenOffice (versão 3) permite editar PDFs, graças à extensão PDF Import.

sexta-feira, 3 de setembro de 2010

sábado, 28 de agosto de 2010

Salvem o Magalhães!

O portátil da minha filha, o notável Magalhães, deixou de responder totalmente.

Desconfiando da ficha de alimentação DC, lá tive de inutilizar o selo da garantia para abrir a máquina. Seguiu-se uma aventura à descoberta dos parafusos perdidos — só não fiquei perdido também graças à excelente descrição em http://forum.zwame.pt/showthread.php?t=430275&page=1.

Ficam algumas imagens da peripécia:

Já tinha saltado a tampa dos LEDs :).
O teclado está prestes a sair também.
Placa dos LEDs já tirada.
Placa do teclado.
Fichas do écran desligadas.
Finalmente, a motherboard. Conector DC à direita, junto do conector RJ45.
O navegador acordado de novo :) .

Achei interessante registar esta recuperação, já que parece haver muito pouca informação sobre magellan hacking. Além disso, ao que consta, problemas com a ficha de alimentação não são cobertos pela garantia — podem pasmar à vontade — e uma reparação fica no mínimo por 30 EUR.

Embora sem imagens, observei que um dos pinos do conector DC estava solto da ligação à motherboard. Com os meus parcos conhecimentos de electrónica, fiquei radiante quando um pingo de solda resolveu o problema.

O meu caso teve um fim feliz, para já. Sobraram apenas 4 dos 27 parafusos removidos :).

domingo, 22 de agosto de 2010

Modem Huawei E1550 (Optimus Kanguru) e pppconfig (Ubuntu Netbook 10.04)

Há dias, registei a forma de utilizar um modem GSM Huawei E1550 (internamente E620) no Eeebuntu 3.0 (http://bitsnoarame.blogspot.com/2010/08/modem-huawei-e1550-optimus-kanguru-e.html).

Desta feita, tentei a mesma proeza no Ubuntu Netbook Edition (Lucid Lynx - 10.04) mas o procedimento é ligeiramente diferente.

A alteração das regras udev não é necessária, sendo todavia preciso instalar o pacote usb-modeswitch. Este pacote cumpre essencialmente a mesma função de fazer emergir o modem do meio do armazenamento USB.

Não consegui usar o Network Manager para activar a ligação, pelo que mantive o perfil PPP criado pelo pppconfig, reproduzido abaixo por conveniência:



/etc/ppp/peers/kanguru

# This optionfile was generated by pppconfig 2.3.18.
#
#
hide-password
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/kanguru"
debug
/dev/ttyUSB0
115200
defaultroute
noipdefault
user "xxxxxxxxx"

ipparam kanguru

usepeerdns


O user é o número associado (93xxxxxxx).


/etc/chatscripts/kanguru

# This chatfile was generated by pppconfig 2.3.18.
# Please do not delete any of the comments. Pppconfig needs them.
#
# ispauth CHAP
# abortstring
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED
# modeminit
'' ATZ
# ispnumber
OK-AT-OK "ATDT*99#"
# ispconnect
CONNECT \d\c
# prelogin

# ispname
# isppassword
# postlogin

# end of pppconfig stuff


Novamente, pon kanguru serve para ligar e pon kanguru para desligar.

Está por confirmar a necessidade de activação do PIN no Windows. Num outro modem E1550, nunca foi possível usar as configurações acima sem efectuar previamente essa activação.

sábado, 14 de agosto de 2010

NetBSD 5.0.2 e Oracle VM VirtualBox 3.2.8

Para uma máquina virtual com nome netbsd, o comando VBoxSDL --norawr0 --startvm netbsd permite arrancar sem problemas, ao passo que a interface GUI disponibilizada dá erro no arranque (em instalação ou não).

Mais detalhes em http://mail-index.netbsd.org/netbsd-users/2010/08/14/msg006702.html.

sexta-feira, 6 de agosto de 2010

Modem Huawei E1550 (Optimus Kanguru) e pppconfig

Tive necessidade de arranjar net móvel -- estou de férias 8) -- e adquiri um modem Huawei E1550 da Optimus Kanguru.
Para correr em Eeebuntu (distribuição baseada em Ubuntu para netbooks Eeepc), procurei alguma informação (ex. http://blog.lynxworks.eu/20090830/huawei-e1550-on-ubuntu).

Precisei de criar a seguinte regra udev (/etc/udev/rules.d/15-huawei-e1550.rules):


SUBSYSTEM=="usb",
SYSFS{idProduct}=="1446",
SYSFS{idVendor}=="12d1",
RUN+="/lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x1446 --type option-zerocd"


modem-modeswitch foi instalado através do pacote udev-extras, visto eu ter uma versão anterior à 10.04.

Após aplicação da regra udev, passei a ter no output de lsusb -v

idProduct 0x1001 E620 USB Modem

Como não tenho Network Manager instalado, criei um perfil PPP, designado de kanguru, através do pppconfig. O «número» para o qual ligo é *99#.

Para simplificar, apresento directamente os scripts gerados:


/etc/ppp/peers/kanguru

# This optionfile was generated by pppconfig 2.3.18.
#
#
hide-password
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/kanguru"
debug
/dev/ttyUSB0
115200
defaultroute
noipdefault
user "xxxxxxxxx"

ipparam kanguru

usepeerdns


O user é o número associado (93xxxxxxx).


/etc/chatscripts/kanguru

# This chatfile was generated by pppconfig 2.3.18.
# Please do not delete any of the comments. Pppconfig needs them.
#
# ispauth CHAP
# abortstring
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED
# modeminit
'' ATZ
# ispnumber
OK-AT-OK "ATDT*99#"
# ispconnect
CONNECT \d\c
# prelogin

# ispname
# isppassword
# postlogin

# end of pppconfig stuff


Finalmente, basta activar a ligação com pon kanguru e desactivar com poff kanguru :).

sexta-feira, 18 de junho de 2010

Parse::Log::Smbd

Decidi tentar a minha mão na criação de módulos Perl.
Passei então pela árdua tarefa de descobrir como criar um módulo pequeno, simples, que não estivesse já sobreposto com outros disponíveis na CPAN.

Surge então o Parse::Log::Smbd, que analisa o log.smbd do Samba à procura de usernames e ligações a partilhas de rede.

O código é ainda muito primitivo e limitado, mas espero que possa vir a ser útil. Tenho ainda muitas questões de como expôr uma API simples e intuitiva.

Agradeço qualquer sugestão ou crítica. O código está em http://search.cpan.org/~affc/.

quinta-feira, 25 de março de 2010

System Rescue CD via PXE (arranque pela rede)

É sempre bom ter por perto um CD de 'socorro' para resolver problemas nas máquinas.
Melhor ainda, é nem usar CD e arrancar directamente pela rede com PXE.

Um dos meus rescue CDs preferido é o System Rescue CD.
Como já tenho um servidor TFTP para servir vários kernels pela rede (o IP deste servidor tem de ser anunciado por DHCP), é simples incorporar esta distribuição.

Depois de descarregar o ficheiro .iso (p.ex. systemrescuecd-x86-1.5.0.iso), este pode ser montado para acedermos ao conteúdo:

# mkdir /mnt/iso && mount -o loop systemrescuecd-x86-1.5.0.iso /mnt/iso

O meu directório de TFTP é /tftpboot e crio /tftpboot/srcd150, onde coloco o conteúdo do directório /mnt/iso/isolinux:

# mkdir /tftpboot/srcd150 && cp -a /mnt/iso/isolinux/* /tftpboot/srcd150/

O ficheiro /mnt/iso/sysrcd.dat vai para uma partilha NFS (nfs_server:/nfs/srcd150), que será acedida pela máquina-cliente no momento de carregar o root filesystem.

Basta alterar agora o display de arranque, mostrando a nova opção de boot (p.ex., srcd150) e a configuração pxelinux (/tftpboot/pxelinux.cfg/default), inserindo as linhas com as opções básicas (setkmap=29 coloca o teclado em português):

label srcd150
kernel srcd150/rescuecd
append initrd=srcd150/initram.igz nfsboot=nfs_server:/nfs/srcd150 setkmap=29

Prontos para boot? :)

terça-feira, 23 de março de 2010

Limpeza de Primavera

Chegou o tempo de passar o pano do pó nas homes dos meus ex-utilizadores (essencialmente, eliminando as contas e conteúdos respectivos).
Por precaução, faço antes um tar.gz do conteúdo de cada home e envio para um servidor remoto.

No "Linux Server Hacks", encontro um dos one-liners em shell mais brilhantes que conheço (adaptado para o meu caso):


$ remote_ip=xxx.xxx.xxx.xxx; for aluno in `cat nao-inscritos.txt`; do echo ${aluno}; (sudo tar czvf - /areas/${aluno}| ssh ${remote_ip} "cat > ${aluno}_home.tar.gz"); done


Que belos embrulhos :) .


domingo, 7 de fevereiro de 2010

Pragmatic Thinking and Learning: Refactor Your Wetware (Andy Hunt, Pragmatic Bookshelf, 2008)

Pragmatic Thinking and Learning é um livro que desperta interesses muito para além dos habituais destinatários (programadores e afins). Andy Hunt (co-autor do clássico The Pragmatic Programmer, de 1999) apostou num tema potencialmente complexo mas fundamental para aqueles que precisam de melhorar as suas competências cognitivas.

Para mim, a palavra-chave recorrente no livro é "deliberado" e nota-se um processo poderoso de auto-conhecimento, analisando:
  • como funciona o cérebro;
  • o lado intuitivo e criativo do cérebro;
  • como corrigir os bugs do cérebro;
  • como aprender eficazmente (deliberadamente);
  • como ganhar experiência;
  • como gerir o foco e a atenção;
  • o que vai para além de tudo isto.
É, sem dúvida, um livro que vale a pena ler, de linguagem acessível e com implicações profundas. Noções como a de um "portfólio" de competências, a ser gerido como se de um portfólio financeiro se tratasse, ou o emprego de técnicas visuais (mind maps e outras) são altamente eficazes e prometem altos retornos do investimento.

sábado, 6 de fevereiro de 2010

Automating System Administration with Perl (David N. Blank-Edelman, O'Reilly, 2009)

Na linha do seu antecessor (Perl for System Administration: Managing multi-platform environments with Perl), este livro é uma excelente referência para desenvolver ferramentas em Perl que melhorem a produtividade de administradores de sistemas e rede.

Duas características importantes do livro são a ênfase na portabilidade da linguagem (representada aqui em ambientes Linux/Unix, Microsoft e Mac OS X) e a abundância de módulos disponíveis por via da rede CPAN, que permitem em regra desenvolver programas poderosos com poucas linhas de código.

As áreas de aplicação representadas são as seguintes:
  • Sistemas de ficheiros (cap. 2);
  • Contas de utilizadores (cap. 3);
  • Gestão de processos (cap. 4);
  • Serviços de nomes de rede TCP/IP (cap .5);
  • Ficheiros de configuração (cap. 6);
  • Administração de bases de dados SQL (cap. 7);
  • Correio electrónico (cap. 8);
  • Serviços de directoria (Finger, Whois, LDAP e Active Directory) (cap. 9);
  • Registos (log files) (cap. 10);
  • Segurança de rede (cap. 11);
  • SNMP (cap. 12);
  • Monitorização e exploração da rede (cap. 13);
  • Aprendizagem experiencial (cap. 14);
  • Apêndice com vários tutoriais (XML/XPath, LDAP, SQL, RCS, VBScript-Perl e SNMP).


sexta-feira, 5 de fevereiro de 2010

Webalizer com virtual hosts

Por necessidade de utilizar o Webalizer com virtual hosts no Apache 2.2, recorri à documentação oficial, que dá algumas pistas, bem como a alguns tutoriais [0][1].

No caso de Debian, costumo separar os vhosts no Apache em directórios do tipo /var/www/vhosts/host. A instalação do Webalizer através do respectivo pacote Debian (# aptitude install webalizer) cria, por omissão, a configuração em /etc/webalizer/webalizer.conf. Queremos naturalmente fazer distinção de configurações por vhost.

Se considerarmos dois vhosts (host1 e host2), temos então:
  • Os directórios /var/www/vhosts/host1 e /var/www/vhosts/host2
  • As configurações /etc/webalizer/host1.conf e /etc/webalizer/host2.conf
  • Os logs do Apache correspondentes, /var/www/vhosts/host1/access_log e /var/www/vhosts/host2/access_log

Vamos copiar agora a configuração do Webalizer para os dois vhosts:
# for vhost in host1 host2; do cp /etc/webalizer/webalizer.conf /etc/webalizer/${vhost}.conf; done.

Precisamos também de criar os directórios para servir no Apache:
# for vhost in host1 host2; do mkdir /var/www/vhosts/${vhost}/webalizer; done.

Vamos agora alterar as configurações no essencial:

/etc/webalizer/host1.conf

LogFile /var/www/vhosts/host1/access_log
OutputDir /var/www/vhosts/host1/webalizer
HostName host1


/etc/webalizer/host2.conf

LogFile /var/www/vhosts/host2/access_log
OutputDir /var/www/vhosts/host2/webalizer
HostName host2


Finalmente, automatizamos a actualização da página web através do cron, a ocorrer aos 15 minutos de cada hora (suficiente no meu caso):

# crontab -e
15 * * * * (for vhost in /etc/webalizer/*.conf; do /usr/bin/webalizer -c ${vhost}; done)

[0] http://magazine.redhat.com/2007/09/24/tips-and-tricks-how-can-i-use-webalizer-to-process-the-logs-of-multiple-virtual-hosts/
[1] http://www.besy.co.uk/debian/how_to_setup_webalizer_for_multiple_websites

quinta-feira, 4 de fevereiro de 2010

SFTP em chroot

Ao deixar para trás definitivamente o FTP autenticado (única opção em muitos servidores partilhados ou com gestão Plesk-like), felizmente descobri que já é possível correr SFTP, forçando os utilizadores a manter as suas actividades dentro da sua home, sem deambulações pelo restante do filesystem.

Até há pouco tempo, o suporte de chrooting obrigava a remendar o OpenSSH, mas agora é uma funcionalidade nativa.

/etc/ssh/sshd_config

...
#UsePAM yes
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match User sftp_user
ForceCommand internal-sftp
ChrootDirectory /chroot_dir


/chroot_dir deve ter owner=group=root e não ser alterável por sftp_user (permissões possíveis 755).
Finalmente, um detalhe importante: a home de sftp_user deve ser / (corresponde à vista que tem dentro da chroot).

Rdesktop

Já era tempo de experimentar o cliente rdesktop para aceder a um desktop Windows a partir do Gnome.
O tsclient parece bastante completo, sobretudo ao mapear $HOME no Windows.

Enviar email via Gmail

Não estou obviamente a falar de MUAs para enviar mensagens escritas por mim.

Tenho sempre muito interesse em que as minhas máquinas também o façam.
Tirando os casos em que os hostnames são FQDN, as nossas máquinas locais não têm geralmente hipótese de enviar directamente para os destinatários.
Entra então o relay (servidor SMTP que serve de intermediário): no meu caso escolhi o do Gmail (smtp.gmail.com).

Esta página explica como o fazer com o Postfix.