克隆后使用 Find、Grep、Awk 或 Sed 重命名服务器

克隆后使用 Find、Grep、Awk 或 Sed 重命名服务器

我的客户告诉我,他们在 VMWare 中克隆了一台 Ubuntu Linux 服务器的虚拟机。现在我的工作是进入所有文件,找出哪些文件仍保留旧的服务器名称“bishop”,并将其更改为其他名称。此外,IP 地址也已更改,我也需要搜索它。

您通常如何使用 find、grep、awk 或 sed 来查找这些文件,然后快速更改它们?最后,我想制作一个 Bash 脚本。

当然,我并不指望你告诉我每个文件,而只是想知道如何查找包含“x”的文件,然后用“y”快速切换该文件。

答案1

我实际上强烈建议您将此操作分为两个步骤:

  1. 查找具有旧主机名和旧 IP 的文件:

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

  2. 然后编辑结果列表并删除任何您知道不应该更改的内容。

  3. 然后使用结果列表,将其放入 shell 脚本中,并使用文件列表作为输入执行类似以下命令序列的操作:

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

相关内容