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