Упс, нашёл баг в функции delroutes , из-за которого не удаляются маршруты к некоторым сайтам
Я исходил из того, что команда
route del -host $hostname определяет IP хоста по его имени, а затем удаляет из таблицы маршрутизации строку с соответствующим IP и маской 255.255.255.255.
Однако всё словно происходит с точностью до наоборот: команда определяет
имена хостов для всех строк таблицы маршрутизации, а затем ищет среди них нужную. При этом, если для какого-то адреса поиск в "обратной зоне DNS" возвращает другое (!!!) имя сайта (например
www.XXXX.ru вместо XXXX.ru), то вместо удаления выводится сообщение об отсутствии указанного маршрута.
Значит нужно удалять маршрут по IP-адресу сайта, а для этого его нужно сначала определить. Например, вот так:
Код:

ip=$(ping $hostname -c 1 | head -n 1 | sed ... )
# в результате получается
# PING имя.сайта (ip.адрес.сайта) 56(84) bytes of data.
Какие параметры для команды sed указать, чтобы получить значение между первыми скобками?