У меня есть эта таблица в postgres:
remote-as IRR-record
+==========+=====================================+
12564 + MAIyNT-AS38082 +
+==========+=====================================+
32934 + AS-FACEBOOK +
+==========+=====================================+
Я хочу перебрать эту таблицу и выполнить команду!если команда терпит неудачу, я хочу использовать вторую команду
for row in c: #this will iterate through the table
try:
res = subprocess.Popen('bgpq3 -4 {} -m 24 -l {}'.format(row[5],row[2]), shell=True, universal_newlines=True,
stdout=subprocess.PIPE).communicate()[0]
except Exception:
print("error detected")
res = subprocess.Popen('bgpq3 -4 AS{} -m 24 -l {}'.format(row[2],row[2]), shell=True, universal_newlines=True,
stdout=subprocess.PIPE).communicate()[0]
В некоторых случаях первая команда приводит к ошибке, поэтому необходимо применить вторую команду!
, если ошибка не возникает,результат:
ip prefix-list 38082 permit 223.27.237.0/24
ip prefix-list 38082 permit 223.27.240.0/24
ip prefix-list 38082 permit 223.27.241.0/24
результаты ошибок:
ERROR:Unable to parse prefix 'MAIyNT-AS38082', af=2 (inet), ret=0
ERROR:Unable to parse prefix MAIyNT-AS38082
ERROR:Unable to add prefix MAIyNT-AS38082 (bad prefix or address-family)
Ошибка в этом случае не может быть легко обнаружена !!
Любая идея?или, может быть, я не должен использовать попробовать, кроме как в этом случае?Я уже пробовал практически любой вид обработки ошибок!как За исключением, кроме как, OsError и т. д. !!
Обратите внимание, что я могу распечатать ошибку через stderr!если результаты стандартного вывода хорошие, я хочу выполнить первую команду !!