[英]How do I append lines in a bash script using sed command?
我的基礎設施的問題是SMTP服務器IP地址是動態的..我使用Vyatta防火牆&我正在嘗試編寫一個腳本,每隔60分鍾檢查一次SMTP IP,如果SMTP IP被更改,它應該自動更新防火牆規則(配置)..
#!/bin/bash
SMTP=$(nslookup smtp.sendgrid.net | awk -F': ' 'NR==6 { print $2 }')
SMTP_IP=x.x.x.x
if [ $SMTP != $SMTP_IP ]
then
???
else
echo "GREEN"
fi
我的防火牆規則如下所示:
rule 979 {
destination {
address "Current SMTP IP"
}
outbound-interface bond1
source {
address 10.x.x.x
}
translation {
address 200.x.x.x
}
}
我希望我的腳本更新以前規則中的防火牆規則。示例:
.
.
.
rule 978 {
destination {
address "NEW SMTP IP"
}
outbound-interface bond1
source {
address 10.x.x.x
}
translation {
address 200.x.x.x
}
}
我是一名網絡人,在腳本方面有一些基本知識。 有人可以幫助我使用bash腳本解決這個問題嗎?
如果我理解您的問題,您希望在“目的地”一詞下的“地址”行中將規則中的一個IP地址替換為另一個IP地址。 像這樣的東西:
#! /usr/bin/awk -f
/destination/ { N = NR + 1 }
NR == N && /address/ && index($0, OLD_IP) {
pos = index($0, OLD_IP)
print substr($0, 1, pos), NEW_IP
next
}
{ print }
我們尋找帶有“目的地”的線,並記錄下一個行號。 在下一行,我們查找“地址”,並查看舊IP地址是否出現在那里。 如果是,我們使用新的IP地址打印修改的規則。 其他只是打印。
調用為
$ awk -v OLD_IP=x.x.x.x -v NEW_IP=${SMTP} -f rules.awk firewall_rules
它應該做的伎倆。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.