Мой клиент сообщил мне, что они клонировали виртуальную машину в VMWare сервера Ubuntu Linux. Теперь моя задача - разобраться во всех файлах и выяснить, где все еще есть старое имя сервера "епископ", и изменить его на другое. Кроме того, изменился IP-адрес, и мне тоже нужно его найти.
Как вы обычно используете find, grep, awk или sed, чтобы найти эти файлы, а затем быстро их изменить? В конце концов, я хочу сделать Bash-скрипт.
Конечно, я не ожидаю, что вы будете рассказывать мне каждый файл, но просто хочу знать методику поиска файлов с «x» в нем и затем быстрого переключения с помощью «y».
Я действительно настоятельно рекомендую вам сделать это ДВУХшаговой операцией:
Найдите файлы со старым именем хоста и старым IP:
find / -print | xargs egrep -l 'oldhost|10.10.10.10' > filelist
Затем отредактируйте полученный список и удалите все, что, как вы знаете, не следует изменять.
Затем используйте полученный список, поместите его в сценарий оболочки и выполните что-то вроде следующей последовательности команд, используя список файлов в качестве входных данных:
.
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