我的基础设施问题是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脚本解决这个问题吗?
答案 0 :(得分:0)
如果我理解您的问题,您希望在“目的地”一词下的“地址”行中将一个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
它应该做的伎俩。