Интерфейс может не упасть, а связь прерваться. Переключиться надо в течении двух секунд максимум, иначе армагедец.
Грубо говоря, есть скрипт, который пингует яндекс. Как только пинг пропал, выполняется следующее:
route del default gw $(достать_текущий_gw)
route add default gw $(достать_gw_другого_интерфейса)
Как реализовать "достать_текущий_gw" - более-менее понятно, через route.
А вот откуда взять "достать_gw_другого_интерфейса"?
нужно слепить функцию, которой на входе даешь, например, "ppp0", на выходе получаешь адрес шлюза для этого интерфейса. Да, можно сделать через traceroute, но он может стормозить. Нужно не выходить за рамки локальной машины. Где-то ведь должна быть инфа по каждому интерфейсу: ip, маска, шлюз. То что ifconfig показывает только ip и маску - очень неприятные грабли.