2016-08-08 9 views
0

HA設定では、eth0のVIPアドレスを定期的にチェックしています(2.2.2.2と呼ぶことができます)。文字列用のBash grepファイルで、別のコマンドで変数として使用する

up ip addr add **1.2.3.34** dev $IFACE 
up ip addr add **1.2.3.40** dev $IFACE 
up ip addr add **1.2.3.48** dev $IFACE 

とコマンドのみの別のグループにそれぞれのIPを渡す:

それがアップしている場合は、私は、/ etc/network/interfacesの設定ファイルではeth0用に定義されたIPアドレスの別のグループを起動する必要があります
ip a a **1.2.3.34/32** dev eth0 
ip a a **1.2.3.40/32** dev eth0 
ip a a **1.2.3.48/32** dev eth0 

私がこれまで行ってきたことである:

#!/bin/bash 
STATUS=$(ip a s eth0 | grep inet | awk '{print $2}' | sed 's/addr://') 
if ip a s eth0 | grep inet | awk '{print $2}' | sed 's/addr://' | grep 2.2.2.2/27 ; then 
cat /etc/network/interfaces | grep -o "up ip addr add [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" > /tmp/ext_ip.txt 

は、今私は(IP AAの1.2.3 ...)上記の別のコマンドにそれぞれの行を渡す方法を助ける必要があるが、どのように見当がつかないこれを適切に行う。

オプションで、プライマリHAホストがオフラインになる場合に、VIPがシステムに存在しない場合は元に戻したいと思います。これを達成する

答えて

0

一つの方法は、アレイ内のすべてのIPアドレスを解析し、インタフェースに割り当てるforループを使用することであろう。

#!/bin/bash 

IFACE='eth0' 
VIP='192.168.0.1' 
IFACES_FILE='/etc/network/interfaces' 

STATUS=$(ip address show "$IFACE" | grep -o "$VIP") 

if [ ! -z "$STATUS" ]; then 
    ip_addresses=($(grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' "$IFACES_FILE")) 
    for ip in "${ip_addresses[@]}"; do 
     ip address add "$ip" dev "$IFACE" 
    done 
fi 

これは簡単な例です。より多くのチェックを追加し、いくつかのロギングメッセージを追加して、デバッグに役立つ出力を提供することができます。また、サーバーの設定によっては、sudoがないとコマンドが機能しないことがあります。私はあなたのソリューション改善してきた

0

おかげAndrii L.:

#!/bin/bash 
IFACE='eth0' 
VIP='2.2.2.2' 
IFACES_FILE='/etc/network/interfaces' 

STATUS=$(ip address show "$IFACE" | grep -o "$VIP") 

if [ ! -z "$STATUS" ]; then 
ip_addresses=($(grep -o 'up ip addr add [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' "$IFACES_FILE" | grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*')) 
for ip in "${ip_addresses[@]}"; do 
ip address add "$ip"/32 dev "$IFACE" 
done 
else 
for ip in "${ip_addresses[@]}"; do 
ip address del "$ip"/32 dev "$IFACE" 
done 
fi 

は、それ以外の場合は、/ etc/network/interfacesファイルで見つかったすべてのIPアドレスとブロードキャストを追加しようとしています。

関連する問題