Назад | Перейти на главную страницу

Использование Find, Grep, Awk или Sed для переименования сервера после клонирования

Мой клиент сообщил мне, что они клонировали виртуальную машину в VMWare сервера Ubuntu Linux. Теперь моя задача - разобраться во всех файлах и выяснить, где все еще есть старое имя сервера "епископ", и изменить его на другое. Кроме того, изменился IP-адрес, и мне тоже нужно его найти.

Как вы обычно используете find, grep, awk или sed, чтобы найти эти файлы, а затем быстро их изменить? В конце концов, я хочу сделать Bash-скрипт.

Конечно, я не ожидаю, что вы будете рассказывать мне каждый файл, но просто хочу знать методику поиска файлов с «x» в нем и затем быстрого переключения с помощью «y».

Я действительно настоятельно рекомендую вам сделать это ДВУХшаговой операцией:

  1. Найдите файлы со старым именем хоста и старым IP:

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

  2. Затем отредактируйте полученный список и удалите все, что, как вы знаете, не следует изменять.

  3. Затем используйте полученный список, поместите его в сценарий оболочки и выполните что-то вроде следующей последовательности команд, используя список файлов в качестве входных данных:

.

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