2013-01-23 63 views
1

我有一系列需要SSH進入的設備,修改了一些更改設備名稱和網​​絡設置的文件。編寫腳本linux命令來修改文件中的數據

文件包含的數據包括:我使用膩子到ssh登錄系統,然後利用納米修改每個文件

NETWORK_ETH1_CLIENTIP_LIST='10.47.19.182' 

HOSTNAME="c50" 

我相信這很容易編寫腳本,但我不太確定我想要做什麼的linux命令。

是否有可用於搜索指定文本文件中的字符串的Linux中的命令,例如, 「HOSTNAME」並將找到的行替換爲新的HOSTNAME?

我目前使用砰砰一些簡化系統的檢查,我從批處理文件調用:

plink.exe -pw PASSWORD [email protected] -m Commands/SystemChecks.txt 

的用戶名和密碼已被省略。 SystemChecks包含一些基本的查找表和ping命令等,以測試設備是否被成功修改。

我需要幫助的是找出一種方法來查找和替換數據(主機名,IP地址,網絡掩碼等)使用Linux命令。

回答

1

您可以使用sed將線路吹走並使用echo重寫內容。我敢肯定,有可能更優雅的方式來取代只是價值

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

將給sed一個嘗試,謝謝:) – cheeseman

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 
+0

有沒有辦法做到這一點,而不知道以前的設備名稱/ IP地址等? – cheeseman