usar módulo de subproceso
import subprocess
command = 'sudo apt update'
subprocess.check_call(command.split())
Потому что сейчас я не могу знать наверняка,Я бы протестировал использование сетевых пространств имен, если можно использовать отказоустойчивые IP-адреса без воздействия на «основной» IP-адрес. Я могу улучшить этот ответ в зависимости от результатов. :Я подозреваю, что проблемы с ARP вызваны «потоком ARP» (, то есть когда один интерфейс отвечает на запрос ARP от имени другого )из-за нескольких интерфейсов в одной и той же локальной сети.
Так что я бы удалил дополнительные настройки аварийного IP-адреса и вручную запустил бы это как root, чтобы использовать эти IP-адреса в сетевых пространствах имен, что изолирует хост от любых проблем с сетью:
Создание пространств имен:
ip netns add failover1
ip netns add failover2
Переместите дополнительные интерфейсы в пространства имен (и остановитесь, если это не удастся):
ip link set eno2 netns failover1 || echo 'No support. stop here.'
ip link set eno3 netns failover2
Настроить...
ip -n failover1 link set lo up
ip -n failover2 link set lo up
ip -n failover1 link set eno2 up
ip -n failover2 link set eno3 up
ip -n failover1 address add Failover_IP_1 peer 89.163.138.65 dev eno2
ip -n failover1 route add default via 89.163.138.65
ip -n failover2 address add Failover_IP_2 peer 89.163.138.65 dev eno3
ip -n failover2 route add default via 89.163.138.65
Это может работать, потому что провайдер уже запустил настройки на шлюзе, чтобы иметь маршруты для этих дополнительных IP-адресов в той же локальной сети.
Теперь отказоустойчивые адреса должны быть доступны для проверки связи без каких-либо побочных эффектов на сервере. (Но ни службы, ни брандмауэры не установлены в сетевых пространствах имен, владеющих этими IP-адресами ).
Из них можно запускать команды (, но в зависимости от настроек отсутствие службы может означать отсутствие DNS, если DNS-сервер работал на хосте):
ip netns exec failover1 traceroute -n 8.8.8.8
Удалить пространства имен (, которые вернут интерфейсы к хосту, если в этих пространствах имен ничего не осталось):
ip netns delete failover1
ip netns delete failover2
На данный момент все работает так, как описано?