簡體   English   中英

如何使用sed命令在bash腳本中追加行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM