Linux

Linux by Grossmann

Dicas

Existem muitas páginas de dicas, e algumas podem ser encontradas na página de links. Aqui estão reunidas algumas dicas aleatórias, se forem úteis, bom proveito, senão, paciência.

Lembrando que estou aceitando sugestões de dicas, basta enviar para meu endereço de email, que consta no fim desta página.


  FTP  

O Linux tem várias aplicações úteis para fazer FTP, tanto upload quanto download. Alguns destes aplicativos são para ser utilizados em linha de comando, e outros para uso em interface gráfica.

  Linha de Comando  

Eu costumo utilizar os seguintes programas de linha de comando para fazer download de arquivos:

Wget
O wget é um aplicativo GNU que permite apenas o download de arquivos, mas, nesta sua especialização, é bastante flexível, permitindo que se faça o download em background, download de um diretório e seus subdiretórios (recursividade), e mesmo o espelhamento (mirror) de um site ou parte de um site. Também serve como web spider, útil para verificar se todos os links de um site estão “vivos”.
Curl
O Curl é semelhante ao wget, mas tem um “plus”: ele pode ser utilizado para baixar vários pedaços diferentes de um determinado arquivo, da mesma forma que programas para Windows® como o Download Accelerator®. Para obter o arquivo final, basta concatenar os mesmos usando o comando cat.
Ncftp
O ncftp é um cliente ftp “com esteróides”. Ele permite o login automático e também um bookmark, entre outras facilidades. Os arquivos podem ser agendados para download, em vez de ser feito o download imediatamente (assim que você sai do programa, é iniciado o download em background). Pode ser utilizado também para upload. Muito útil, principalmente para quem está acostumado com o cliente ftp de linha de comando tradicional.
  X  

Para fazer download no modo gráfico, também conhecido como X, eu utilizo quase que exclusivamente o X Downloader, que tem como característica mais interessante, a meu ver, o fato de que pode pegar um link que seja colocado no clipboard do X, mais ou menos da mesma forma que o GetRight ©.

  Integridade de Arquivos  

Um dos problemas mais comuns quando se faz download usando linhas discadas é a corrupção de arquivos. Embora a maior parte das vezes o protocolo TCP cuide da integridade dos arquivos transferidos, ainda ocorrem erros de transferência, tornando inúteis aqueles arquivos. Se o arquivo ficará apenas no disco rígido, é uma questão de fazer o download novamente, mas quando o erro de transferência é “eternizado” em um CD, o problema fica um pouco mais sério. E quando se trata da imagem ISO de 640MB daquela distribuição de Linux, é melhor conferir antes de queimar o CD se o arquivo está OK.

Para nossa sorte, a maioria dos sites disponibiliza um código de checksum extendido, o md5sum, ou MD5 Checksum. Verifique no diretório em que está o arquivo que você está baixando se existe um arquivo com nome md5.sum, ou assemelhado, e baixe o mesmo também. Se não houver um arquivo md5.sum ou assemelhado, verifique na página do programa, geralmente existe uma página de nome Download, em que são listados os nomes dos arquivos e respectivos somatórios MD5.

A verificação é mais simples se há um arquivo md5.sum (vou assumir, de agora em diante, que é este o nome do arquivo que contém o somatório MD5 dos arquivos que foram baixados - se não for este o caso, siga as instruções abaixo levando isto em conta). Neste caso, basta executar o seguinte comando, no diretório em que os arquivos foram baixados:

$ md5sum --check md5.sum

O md5sum irá listar os arquivos em md5.sum (nem sempre são todos os que foram copiados - neste caso irá ocorrer um erro de leitura para aquele arquivo, mas o md5sum irá prosseguir com os outros arquivos) junto com uma mensagem de diagnóstico, informando no final um resumo de quantos arquivos tiveram seu somatório md5 conferido com e sem erros.

Se você não tem um arquivo md5.sum, mas tem uma página que lista os arquivos e respectivos somatórios MD5, então terá de fazer a conferência visualmente, ou seja, terá que executar o comando md5sum como abaixo e conferir arquivo por arquivo se o somatório está correto:

$ md5sum *

Se você não encontrou o somatório MD5 dos arquivos em nenhuma parte, verifique se o programador responsável por fazer o upload dos arquivos tem condições de fazer isto para ti ou apontar onde os mesmos se encontram.

  Autenticidade de Arquivos  

Outro problema que pode ocorrer é o caso de arquivos falsificados, colocados no lugar dos arquivos originais dos programadores. Já aconteceu com uma ferramenta Linux, de um invasor trocar a versão que constava no site principal de FTP por uma versão que possuía uma backdoor.

Este é um problema diferente do anterior. No caso anterior queriamos saber se o arquivo foi transferido corretamente. Agora queremos saber se o arquivo que estamos transferido é o que queremos baixar, ou se foi adulterado por alguém. Um invasor mais esperto vai atualizar os arquivos md5.sum, para que uma verificação casual não acuse erro de somatório MD5. Como saber se o arquivo foi adulterado por um invasor?

Neste caso, precisamos verificar se o autor dos programas assinou os programas. O conceito de assinatura de arquivos vai ser discutido na página sobre segurança, de forma que aqui fica apenas a dica: verifique se o arquivo foi assinado. Para isto, terás que ter a chave pública do programador em questão na sua keyring, bem como um aplicativo para verificação da autenticidade da assinatura e do arquivo em relação à assinatura.

Para fazer esta verificação, normalmente se utiliza o GnuPG. Na página do mesmo existem documentos explicando como instalar e utilizar o mesmo. Como última observação desta dica, distribuições “oficiais”, como o Conectiva Linux, assinam todos os pacotes RPM que estão em seu site. A assinatura do pacote RPM pode ser verificada até mesmo com o aplicativo rpm (veja a página man do rpm, particularmente a opção --checksig) e apt-get (para quem tem a última versão do Conectiva Linux ou usa o Debian GNU/Linux).


  Wget  

Um aplicativo do porte do wget possui muitas funcionalidades, permitindo que se utilize o mesmo de muitas formas diferentes. Só a possibilidade de fazer mirror de sites permite que se mantenha uma cópia local de sites como o Linux Gazette, por exemplo, permitindo consultas “off line” ao mesmo, mesmo que o browser não possua esta funcionalidade.

A dica sobre o wget que vou passar aqui é a forma que eu utilizo para agendar downloads de vários arquivos em um horário em que não estou presente (desde que o computador permaneça ligado, é claro).

O primeiro passo é criar um arquivo com todos os links que devem ser baixados, informando a URL completa. Por exemplo, suponha que pretendo fazer o download de todos os arquivos do Netscape no site de atualizações do Conectiva Linux 5.0. Para tal, crio um diretório $HOME/download/atualizacoes-5.0/ e, dentro do mesmo, crio o arquivo get-list.txt, com o seguinte conteúdo:

ftp://atualizacoes.conectiva.com.br/5.0/i386/netscape*

O próximo passo é, ainda no diretório $HOME/download/atualizacoes-5.0/, executar o seguinte comando:

$ at 19:00
> wget -c -t0 -T30 -i get-list.txt
> Ctrl+D

Quando é informado o Ctrl+D, o comando at termina a sua entrada e informa o número do job, bem como o horário que o mesmo será executado. No dia seguinte, se a tarefa já foi completa, você recebe um email na sua conta local informando o resultado do comando.

As opções informadas são:

-c
Esta opção informa ao wget para continuar o download de onde terminou se encontrar um arquivo parcial. Se não fosse informada esta opção, ele criaria novo arquivo e começaria o download do início.
-t0
Com esta opção, estou informando ao wget que, caso o download falhe, ele deve repetir indefinidamente o mesmo. É preciso cuidado com esta opção, principalmente se o comando será executado em uma sexta-feira para ser verificado somente na segunda feira - se a URL estiver errada, o wget vai ficar tentando encontrar o arquivo indefinidamente...
-T30
O wget utiliza a facilidade de timeout, mas seus limites de tempo não são satisfatórios, pelo menos não para mim. Com esta opção, estou informando ao wget que, se não houver fluxo de dados por 30 segundos, ele deve refazer a conexão.
-i get-list.txt
Esta opção informa ao wget que este deve ler as URL's a serem baixadas a partir de um arquivo, a saber, get-list.txt (pode ser qualquer nome), em vez de receber a mesma na linha de comando.

É claro que com uma lista de arquivos tão pequena para se baixada, não há necessidade de se criar um arquivo para guardar o link, mas considere o fato que, às vezes, você se esquece de onde baixou determinado arquivo. Se tiver o arquivo get-list.txt no diretório em que está o arquivo que você baixou, fica mais fácil de identificar a origem e mesmo de determinar se é a última versão.


  Disquetes  

O uso de disquetes de forma eficiente requer poucos truques, desde que se saiba o que fazer. Por exemplo, o padrão no Unix é que cada unidade removível tenha que ser montada após a inserção, e desmontada antes de ser ejetada ou retirada a unidade de leitura. Isto vale para disquetes e umidades de CD.

Entretanto, a maioria dos usuários está acostumada com o modo DOS, ou seja, simplesmente inserir um disquete na unidade de leitura e executar um dir a: para saber o que contém o mesmo, e ir trocando disquetes e repetindo o comando até encontrar o disquete que procura. Só que se isto for feito no Linux podemos ter problemas sérios: se você montar um disquete, o diretório do mesmo é lido para a memória e só será descartado quando a unidade for desmontada. Isto significa que, se você trocar de disquete sem desmontar o disquete, um comando dir irá retornar exatamente a mesma listagem de diretório. Se a unidade for desmontada, pode ocorrer que o diretório da memória seja gravado sobre o diretório do disquete, fazendo com que o conteúdo original do disquete seja perdido.

Se formos seguir o modo UNIX de trabalhar, então para cada disquete teremos que repetir os seguintes comandos (admitindo que estamos montando os disquetes em /mnt/floppy, que o disquete a ser montado está em /dev/fd0 e é tipo vfat, ou seja, disquete formatado pelo DOS/Windows®):

$ mount -t vfat /dev/fd0 /mnt/floppy
$ dir /mnt/floppy
$ umount /mnt/floppy

Para facilitar a vida dos usuários, os dois primeiros comandos já fazem parte de um alias, ou pseudo-comando, em algumas distribuições Linux:

$ alias fd
alias fd="mount /dev/fd0 /mnt/floppy; cd /mnt/floppy && ls"

Entretanto, esta solução ainda é um pouco capenga em relação à facilidade que temos no DOS/Windows®. Mas não precisamos nos contentar com uma solução capenga, a maioria das distribuições Linux conta com um pacote chamado mtools, que justamente visa prover o usuário de ferramentas para trabalhar com unidades de disquete e disquetes formatados pelo DOS/Windows®. No caso, para encontrar aquele arquivo/disquete em um conjunto de disquetes, tudo o que precisamos fazer é executar o seguinte comando:

$ mdir a:

Para nossa conveniência, as mtools assumem que a unidade A: é /dev/fd0, e B: é /dev/fd1. Outros comandos que podem ser utilizados incluem o mcopy, para copiar de e para o disquete, e o mtype, para fazer o que o cat faz por arquivos texto no Linux.

  Formatando Disquetes  

A formatação de disquetes pode ser feita em dois passos, mas é importante primeiro decidir qual o tamanho que terá cada disquete. Podemos formatar um disquete de 1.44 MB usando o dispositivo /dev/fd0H1440, mas não é este o único formato de disco que temos disponível:

$ dir /dev/fd0H*
/dev/fd0H1440  /dev/fd0H1722  /dev/fd0H1840  /dev/fd0H720
/dev/fd0H1600  /dev/fd0H1743  /dev/fd0H1920  /dev/fd0H820
/dev/fd0H1680  /dev/fd0H1760  /dev/fd0H360   /dev/fd0H830 

Eu já utilizei com sucesso o formato de 1.722MB, ou seja, /dev/fd0H1722. O formato /dev/fd0H1680 era utilizado nos disquetes de instalação do Windows 95®.

Para formatar disquetes, eu geralmente utilizo o formato vfat, por que o formato ext2 exige um overhead desnecessário do disquete, sendo ineficiente para o mesmo. A sequência de comandos para formatar o disquete em 1.722MB é:

$ fdformat /dev/fd0H1722
$ /sbin/mkfs.msdos /dev/fd0H1722

E é isso! O disquete está formatado e verificado, pronto para ser utilizado tanto no seu Linux, com as ferramentas mtools, quanto no DOS/Windows®, com as ferramentas padrão daquele sistema operacional.


  Edição de Arquivos  

A edição de arquivos é parte importante no Linux. Não só a totalidade dos aplicativos e programas GNU utilizados no Linux é configurada a partir de arquivos textos, como o próprio kernel utiliza arquivos no formato texto para configurar várias opções. Mais que isto, o Linux é herdeiro da longa tradição do UNIX, que tem sido utilizado por acadêmicos no mundo inteiro não só para escrever programas, mas também teses, resumos, e artigos científicos.

Quando está se falando em edição de arquivos no Linux, existem várias coisas a serem vistas. Em primeiro lugar, o Linux é acompanhado de ferramentas para edição de arquivos en masse. Você pode facilmente editar vários arquivos .html, por exemplo, substituindo um link errado em todos eles automaticamente.

Em segundo lugar, o Linux possui uma gama enorme de editores de texto que trabalham em tela cheia no console, desde o vi e seus clones, ao EMACS e a editores como o mcedit, que imita o editor interno no Norton Utilities®, a clones do WordStar$reg; e outros editores menos conhecidos.

Em terceiro lugar, existem também editores de texto para o modo gráfico (X Window System). Desde o KOffice, que funciona integrado ao KDE, ao Pathetic Writer, editor que acompanha o Siag Office, a editores stand-alone, como o WordPerfect®, o XEmacs, e outros.

Na verdade existe uma gama enorme de maneiras de se trabalhar com textos no Linux, e há o potencial de que cada usuário encontre sua própria forma de trabalhar com o mesmo.

  Formatos de Documento  

Tradicionalmente o UNIX tem sido utilizado para armazenar documentos em formato texto puro. Esta tradição é antiga, e talvez tenha seu princípio com o próprio UNIX.

Em vez de utilizar um formato de arquivo binário, como por exemplo o formato de documentos do MS Word®, utiliza-se geralmente texto plano, em que são inseridas instruções específicas de formatação (sempre em formato texto) dependendo do tipo de documento que se está trabalhando.

Por exemplo, o pacote de formatação de arquivos groff trabalha com diretivas de ponto que indicam como o documento deve ser formatado. Para ter uma idéia de como é um documento formatado pelo groff, basta usar uma página man qualquer. Para saber como é o aspecto interno de um documento groff, experimente o seguinte comando:

$ cat /usr/man/man1/lsmod.1

Se houver um erro de arquivo não encontrado, use o comando abaixo:

$ zcat /usr/man/man1/lsmod.1.gz

Outro formato de documento comum é o TeX, que foi criado por Donald Knuth para formatação de documentos. O TeX tem sido utilizado extensivamente em universidades americanas para produção de textos científicos.

Por fim, temos o SGML e seu “filho” mais recente, o XML. Ambos são linguagens de marcação, e expressam uma filosofia de trabalhar com arquivos (ou objetos, como no caso do XML). O HTML é um dos exemplos de sucesso do SGML: Um documento chamado de DTD (“Document Type Declaration” - vide a HTML 4.01 Specification) define como é a estrutura do documento (lógica e também de apresentação) e um conjunto padrão de ferramentas pode ser então utilizada para formatar e verificar a consistência da estrutura do documento - qualquer documento. Uma extensão do uso da SGML é em empresas que trabalham extensivamente com documentos. Em vez de utilizar um formato de documento binário e potencialmente não suportado por muitos editores, eles adotam o SGML, criam DTD's para representar os documentos mais comuns, e deixam ao gosto dos autores escolher qual o editor de texto que utilizarão. Os programadores podem se aproveitar da estrutura de um documento SGML e escrever ferramentas mais práticas para trabalhar com estes documentos - formtação, recuperação, arquivamento, pesquisa, etc.

  Editores Stream  

Editores são chamados de “stream” quando eles tratam o texto como um fluxo contínuo de bytes, e operam sobre o mesmo. O editor “stream” mais conhecido no mundo Unix e Linux é o sed.

O sed geralmente é utilizado quando se tem que fazer várias alterações em um conjunto de arquivos. Vamos supor um exemplo prático: Você quer substituir uma determinada palavra, digamos “XWindows” por outra, “X Window System”, em um livro sobre o X que você esteja escrevendo. No nosso caso, o livro tem dezenas de capítulos, como cap01.txt, cap02.txt, e assim por diante, e a palavra errada está presente em todos eles.

Podemos fazer isto com um simples script. O sed lê da entrada padrão, aplica os comandos especificados e escreve na saída padrão. Para filtrar um arquivo com o sed faríamos o seguinte:

$ sed script < entrada > saida

Se o arquivo de entrada fosse myfile.txt, então o comando ficaria:

$ sed script < myfile.txt > saida

Não podemos redirecionar a saída para myfile.txt por que teremos um problema de sobrescrita, e perderemos todo o conteúdo de myfile.txt. O que se faz é direcionar a saída para um arquivo temporário e então renomear este arquivo temporário para myfile.txt:

$ sed script < myfile.txt > saida.tmp
$ mv saida.tmp myfile.txt

Para trocar uma string, o que utilizamos é a instrução s//, que fica s/XWindows/X Window System/g. O “g” no final é para que o sed faça a substituição em todas as ocorrências que houverem em uma linha, e não apenas na primeira.

Aliando ao sed nosso conhecimento em shell script, vamos escrever um pequeno script para fazer o serviço para nós:

#!/bin/bash
#

SED_SCRIPT="sed_script.sed"

cat <<EOF_SED_SCRIPT > $SED_SCRIPT
s/XWindows/X Window System/g
EOF_SED_SCRIPT

for ARQUIVO in cap??.txt
do
  sed -f $SED_SCRIPT $ARQUIVO > tmp.txt
  mv tmp.txt $ARQUIVO
done

rm $SED_SCRIPT

#EOF

Supondo que o script chame-se correcao.sh, basta mudar os atributos do mesmo para “executável” (chmod +x correcao.sh), e executar o mesmo (./correcao.sh). É tudo o que precisamos para que as dezenas de arquivos sejam corrigidas.

Em geral este é o uso do sed. Ele pode ser utilizado para fazer várias substituições de uma só vez, e também para outras edições no arquivo. Veja a documentação que acompanha o mesmo para ter uma idéia de todas as possibilidades. Se quiser um pequeno desafio para iniciar, descubra como o sed pode ser utilizado para que um arquivo editado no MS DOS® seja alterado para o formato Unix. No DOS, as linhas terminam com uma seqüência cr+lf, e no Unix, apenas um caracter lf é utilizado.

  Editores Full Screen  

Outro tipo de editor muito popular no Linux são os editores full screen. São editores para serem usados em um console em modo texto, e ocupam a tela inteira. Podem ser utilizados no X, dentro de um xterm ou um terminal rxvt.

Podemos começar com o clássico: os famosíssimos e antiqüíssimos vi e EMACS. Ambos são tradicionais no mundo Unix e bem conhecidos por quem tem alguma experiência com o mesmo. É difícil dizer qual dos dois é mais popular ou tem a maior legião de apaixonados e devotados fãs/usuários.

A primeira vista, nenhum dos dois tem nada que atraia a vista: seu aspecto é horrível e o primeiro contato com eles é, geralmente, traumático, sendo o trauma proporcional ao tempo que o usuário tem de uso de Windows. Alguns chegam a odiar e declarar guerra a qualquer um dos dois, mas quem superar esta fase irá colher os frutos que estes editores reservam aos que persistem.

Atualmente eu sou usuário do vi, e estou, aos poucos, dominando esta fera. Não é fácil, mas tenho persistido e, quem sabe, algum dia não consigo dizer que sou um usuário razoável do vi. As dicas sobre o vi você pode conferir aqui. Você pode conferir também minha tradução/adaptação do Vim CookBook aqui.

Sobre o EMACS eu ficarei devendo por enquanto. Em um futuro não muito distante eu farei uma tentativa séria de utilizar o mesmo no Linux (ouvi dizer que ele é excelente para edição de arquivos SGML) e estarei compartilhando aqui minhas experiências. Aguarde...


  Samba  

Em um mundo em que redes mistas são a regra e não a exceção, poder comunicar servidores e clientes Linux com servidores e clientes Microsoft Windows® é essencial.

O pacote que faz este serviço é o Samba, que pode ser utilizado em qualquer Unix, não apenas no Linux, e que permite que uma máquina Linux funcione como servidor ou como cliente, acessando servidores e permitindo o acesso de clientes Windows.

A administração do SAMBA é extremamente fácil, e existe um livro que ajuda bastante neste sentido: "Using Samba". Este livro está disponível para download em http://linux.ora.com/ no formato PDF.

Para quem tem o Conectiva Linux, a instalação do pacote samba-doc e/ou do samba-swat acrescenta uma cópia em formato HTML deste mesmo livro. No caso do samba-swat, o livro fica em /usr/share/swat/using-samba.

Outros guias, em português, podem ser encontrados na página de suporte da Conectiva.



© 2001 César A. K. Grossmann
Esta página é OpenContent, e pode ser utilizada nos termos da OpenContent License.
1