Editando arquivos

Neste artigo, será apresentada uma função interessante do comando sed, que é a possibilidade de editar arquivos em modo texto. Neste artigo, será apresentada uma função interessante do comando sed, que é a possibilidade de editar arquivos em modo texto. para maior entendimento o exemplo aqui descrito, tratará da edição de um arquivo de sistema, o arquivo /etc/resolv.conf. para isso, é necessário efetuar backup do arquivo original, e executar todos os comandos com o usuário root.

No primeito exemplo, iremos analisar como editar o arquivo /etc/resolv.conf, modificando o parâmetro nameserver, primeiramente, vamos listar o arquivo em seu formato original:

host:~# cat /etc/resolv.conf
domain minimedia.com.br
search   minimedia.com.br
nameserver 192.168.0.1

Em seguida executaremos a seguinte linha de comandos:

host:~# sed 's/192.168.0.1/192.168.0.200/' /etc/resolv.conf
domain minimedia.com.br
search  minimedia.com.br
nameserver 192.168.0.1
Podemos verificar que o parâmetro nameserver foi alterado de 192.168.0.1 para 192.168.0.200, porém desta forma não efetuamos a edição do arquivo, a seguir segue mais um exemplo de como alterar o arquivo /etc/resolv.conf:
host:~# sed 's/192.168.0.1/192.168.0.200/' /etc/resolv.conf >> /tmp/resolv.conf.tmp
Redirecionamos a saída do comando sed para o arquivo temporário /tmp/resolv.conf.tmp, isso utilizando o comando sed em apóstrofos.

Após a execução da linha de comandos acima, o próximo passo será copiar o arquivo temporário, para o arquivo original:

host:~# cp /tmp/resolv.conf/tmp /etc/resolv.conf

Com o comando acima, foi substituído o arquivo temporário pelo original, a seguir listamos o arquivo alterado:

host:~# cat /etc/resolv.conf
domain minimedia.com.br
search   minimedia.com.br
nameserver 192.168.0.200

Como podemos ver, o arquivo /etc/resolv.conf foi alterado, nosso próximo passo, é desenvolver um script para tal função, para tanto vamos iniciar a criação do script:

host:~# touch alter-resolv.sh
host:~# chmod +x  alter-resolv.sh

Acima com o comando touch, foi criado o script alter-resolv.sh e em seguida adicionada permissão de execução ao mesmo, o conteúdo do arquivo deve ser o seguinte:

#!/bin/bash

ATUAL=`grep nameserver /etc/resolv.conf |cut -d " " -f2`

sed s/$ATUAL/$1/ /etc/resolv.conf > /tmp/resolv.conf.tmp

cp /tmp/resolv.conf.tmp /etc/resolv.conf

rm -rf /tmp/resolv.conf.tmp

Após criado e com permissão de execução, o script deve ser executado da seguinte forma:

host:~# ./alter-resolv.sh

Exemplo:

host:~# ./alter-resolv.sh 192.168.0.200

O comando sed possui diversas utilidades, para aqueles que desejam se aprofundar mais em programação em shell script, é fortemente recomendada uma visita ao site do sed ( http://sed.sourceforge.net ), e também de sua página de manual.