编写linux命令脚本以修改文件中的数据
我有一系列需要SSH连接的设备,修改一些文件,更改设备名称和网络设置 这些文件包含以下数据:编写linux命令脚本以修改文件中的数据,linux,command-line,batch-file,ssh,plink,Linux,Command Line,Batch File,Ssh,Plink,我有一系列需要SSH连接的设备,修改一些文件,更改设备名称和网络设置 这些文件包含以下数据: NETWORK_ETH1_CLIENTIP_LIST='10.47.19.182' HOSTNAME="c50" 我使用putty将ssh连接到系统中,然后使用nano修改每个文件 我相信编写脚本会很容易,但我不太确定linux命令是否适合我想做的事情 linux中是否有命令可以用于搜索指定文本文件中的字符串,例如“HOSTNAME”,并用新的主机名替换找到的行 我目前正在使用plink进行我从批处
NETWORK_ETH1_CLIENTIP_LIST='10.47.19.182'
HOSTNAME="c50"
我使用putty将ssh连接到系统中,然后使用nano修改每个文件
我相信编写脚本会很容易,但我不太确定linux命令是否适合我想做的事情
linux中是否有命令可以用于搜索指定文本文件中的字符串,例如“HOSTNAME”,并用新的主机名替换找到的行
我目前正在使用plink进行我从批处理文件调用的一些更简单的系统检查:
plink.exe -pw PASSWORD USERNAME@192.168.77.77 -m Commands/SystemChecks.txt
用户名和密码已被省略。SystemChecks包含一些基本的查找表和ping命令等,用于测试设备是否已成功修改
我需要的帮助是找到一种使用linux命令查找和替换数据(主机名、ip地址、网络掩码等)的方法
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
您可以使用sed将行吹走,然后使用echo重新编写内容。我相信可能有更优雅的方式来取代价值
target='/path/to/target_file'
sed -i "/HOSTNAME/d" $target
echo "HOSTNAME=\"newhostname\"" >> $target
是否有一种方法可以在不知道以前的设备名称/ip地址等的情况下执行此操作?