1

我有一系列设备需要通过 SSH 连接,修改一些文件以更改设备名称和网​​络设置。

这些文件包含以下数据:

NETWORK_ETH1_CLIENTIP_LIST='10.47.19.182'

HOSTNAME="c50"

我正在使用 putty ssh 进入系统,然后使用 nano 修改每个文件。

我相信编写脚本很容易,但我不太确定我想要做什么的 linux 命令。

linux 中是否有我可以使用的命令在指定的文本文件中搜索字符串,例如“HOSTNAME”并用新的 HOSTNAME 替换找到的行?

我目前正在使用 plink 进行一些从批处理文件调用的更简单的系统检查:

plink.exe -pw PASSWORD USERNAME@192.168.77.77 -m Commands/SystemChecks.txt

用户名和密码已被省略。SystemChecks 包含一些基本的查找表和 ping 命令等来测试设备是否被成功修改。

我需要帮助的是找出一种使用 linux 命令查找和替换数据(主机名、IP 地址、网络掩码等)的方法。

4

2 回答 2

1
echo 'HOSTNAME="c50"' | sed 's/HOSTNAME="c50"/HOSTNAME="c60"/g'

使用命令sed,您可以轻松实现替换。

假设您有一个名为的文件file.conf,并且该文件中有以下内容,如下所示:

NETWORK_ETH1_CLIENTIP_LIST='10.47.19.182'
HOSTNAME="c50"

因此,如果要将值更改HOSTNAME="c50"HOSTNAME="d10000",可以通过sed以下方式使用:

sed -i 's/HOSTNAME="c50"/HOSTNAME="d10000"/g' file.conf
于 2013-01-23T02:38:23.657 回答
1

您可以使用 sed 将线路吹走并使用 echo 重新编写内容。我敢肯定,可能有更优雅的方式来替换值

target='/path/to/target_file'
sed -i "/HOSTNAME/d" $target
echo "HOSTNAME=\"newhostname\"" >> $target
于 2013-01-23T02:40:33.843 回答