Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写linux命令脚本以修改文件中的数据_Linux_Command Line_Batch File_Ssh_Plink - Fatal编程技术网

编写linux命令脚本以修改文件中的数据

编写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进行我从批处

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

这些文件包含以下数据:

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地址等的情况下执行此操作?