#!/bin/bash function check_not_installed() { c=0 config=$(vtysh -c "show run") for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p'); do echo "$config" | egrep -q "^route-map $route_map_name permit 20$" c=$((c+$?)) echo "$config" | egrep -q "^route-map $route_map_name deny 30$" c=$((c+$?)) done return $c } check_not_installed not_installed=$? if [[ $not_installed -ne 0 ]]; then TSA_FILE=$(mktemp) for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p'); do case "$route_map_name" in *V4*) ip_version=V4 ip_protocol=ip ;; *V6*) ip_version=V6 ip_protocol=ipv6 ;; *) continue ;; esac sonic-cfggen -d -a "{\"route_map_name\":\"$route_map_name\", \"ip_version\": \"$ip_version\", \"ip_protocol\": \"$ip_protocol\"}" -y /etc/sonic/constants.yml -t /usr/share/sonic/templates/bgpd/tsa/bgpd.tsa.isolate.conf.j2 > "$TSA_FILE" vtysh -f "$TSA_FILE" rm -f "$TSA_FILE" done echo "System Mode: Normal -> Maintenance" else echo "System is already in Maintenance mode" fi