Usando Find, Grep, Awk ou Sed para renomear o servidor após a clonagem

1

Meu cliente me diz que clonou uma VM no VMWare de um servidor Ubuntu Linux. Agora é o meu trabalho para entrar em todos os arquivos e descobrir o que ainda tem o nome do servidor antigo de "bispo" e alterá-lo para outra coisa. Além disso, o endereço IP é alterado e eu preciso procurar por isso também.

Como você usaria normalmente o find, grep, awk ou sed para encontrar esses arquivos e alterá-los rapidamente? No final, quero fazer um script Bash.

Naturalmente, não estou esperando que você me conte todos os arquivos, mas apenas queira saber a técnica para localizar arquivos com "x" e depois alternar rapidamente com "y".

    
por ServerChecker 25.06.2011 / 01:41

1 resposta

2

Na verdade, sugiro que você faça dessa uma operação em DOIS passos:

  1. Encontre os arquivos com o nome de host antigo e o IP antigo:

    find / -print | xargs egrep -l 'oldhost|10.10.10.10' > filelist

  2. Em seguida, edite a lista resultante e remova todas as informações que você saiba que não devem ser alteradas.

  3. Em seguida, use a lista resultante, coloque-a em um shell script e faça algo como a seguinte sequência de comandos usando a lista de arquivos como entrada:

.

cp filename filename.20110624     # lets be safe!  
if test $? -ne 0
then
    echo 'filename copy bad'
    exit 1
fi

cat filename.20110624 | sed 's/oldhost/newhost/g
s/10.10.10.10/10.20.20.20/g' > filename # the newline between commands is needed

if test $? -ne 0
then
    echo edit failed
    cp filename.20110624 filename
    if test $? -ne 0
    then
        echo unable to restore filename
        exit 1
    fi
    exit 1
 fi

 exit 0
    
por 25.06.2011 / 02:02

Tags