脚本化linux命令来修改文件中的数据

时间:2013-01-23 02:34:29

标签: linux command-line batch-file ssh plink

我需要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地址,网络掩码等)的方法。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

你可以使用sed将线路吹掉并用echo重新写入内容。我确信可能有更优雅的方法来替换值

target='/path/to/target_file'
sed -i "/HOSTNAME/d" $target
echo "HOSTNAME=\"newhostname\"" >> $target