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/\/ /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.