「ipパスの追加」を呼び出す前にパラメータを確認するには?

「ipパスの追加」を呼び出す前にパラメータを確認するには?

「ipパスの追加...」への呼び出しに拡張されるetcdパラメータを設定するプログラムを使用していますが、エラーなしで成功するには、これらの呼び出しが必要です。テンプレートは次の形式を使用します。

ip route add < route > [ via < gateway > ] dev < interface >

私は次のような答えを受けました。

# ip route show
169.254.0.0/16 dev ens192 scope link metric 1002 
172.16.25.64/26 dev ens192 proto kernel scope link src 172.16.25.115 
254.146.247.0/24 dev ens224 scope link 

# ip route add 10.20.30.0/24 via 172.16.25.124 dev ens192
# ip route delete 10.20.30.0/24 via 172.16.25.124 dev ens192
# ip route add 10.20.31.0/24 via 172.16.25.124 dev ens224
RTNETLINK answers: Network is unreachable

# ip route add 10.20.31.0/24 via 254.146.247.1 dev ens224
# ip route delete 10.20.31.0/24 via 254.146.247.1 dev ens224
# ip route add 10.20.30.0/24 via 254.146.247.1 dev ens192
RTNETLINK answers: Network is unreachable

# ping -c 1 172.16.25.124
PING 172.16.25.124 (172.16.25.124) 56(84) bytes of data.
64 bytes from 172.16.25.124: icmp_seq=1 ttl=64 time=0.294 ms

--- 172.16.25.124 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.294/0.294/0.294/0.000 ms

# ping -c 1 254.146.247.1
PING 254.146.247.1 (254.146.247.1) 56(84) bytes of data.
ping: sendmsg: Operation not permitted

--- 254.146.247.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

塗りつぶされた設定ファイルを使用するサービスが再起動されたときに、塗りつぶされたテンプレートが「ipパスの追加...」を使用して実行されるように、Pythonを使用してetcdデータベースに保存するパラメータを収集しています。最後に、「ip Route add」が呼び出されたときに失敗しないように、パス、ゲートウェイ、およびインターフェイスで使用される値を検証する方法を探しています。特に、上記の例では、ゲートウェイのIPアドレス254.146.247.1がインターフェイスens192から接続できないことに注意してください。

上記の例のように、pingは使用できません。 172.16.25.124 は ping 可能で、インターフェイス ens192 のゲートウェイとして使用できますが、ens224 は使用できません。 254.146.247.1はpingできませんが、インタフェースens224のゲートウェイとして使用できますが、ens192の場合は使用できません。

どんな助けでも大変感謝します。

ベストアンサー1

次のコードを試してください。

#!/bin/bash
IP_RULES_FILE=/tmp/iprules.txt

while read rule
do
   GW=`echo $rule |  awk '{print $6}'`
   ping -c1 $GW 2>/dev/null 1>/dev/null
   if [ "$?" = 0 ]; then
    $rule
    else
        echo "host $gw is not reachable"
    fi
done < $IP_RULES_FILE
  • /tmp/iprules.txt追加する必要があるファイルにiprouteを保存してください。
  • このスクリプトは、指定されたルールからゲートウェイを取得し、サーバーでゲートウェイを構成する前に接続可能性を確認します。

おすすめ記事