Преобразование в строку времени может быть выполнено непосредственно в bash (менее чем за 24 часа):
$ TZ=UTC0 printf '%(%H:%M:%S)T\n' 123
00:02:03
Разницу во времени можно найти с помощью простой математики:
$ now=$(printf '%(%s)T')
$ future=$(date -d '+10 hours' '+%s')
$ tdiff=$(( future - now ))
$ TZ=UTC0 printf '%(%H:%M:%S)T\n' "$tdiff"
10:00:00
Чтобы получить до 364 дней, используйте:
now=$(printf '%(%s)T')
future=$(date -d '+10 hour' '+%s')
tdiff=$(( future - now ))
j=$(( $(TZ=UTC0 printf '%(%j)T' "$tdiff") - 1 ))
TZ=UTC0 printf '%s days %(%H:%M:%S)T\n' "$j" "$tdiff"
0 days 10:00:00
Как вы и сказали. Другие клиенты на коммутаторе с вашим маршрутизатором в качестве шлюза имеют общедоступные IP-адреса. Ваш роутер этого не делает. Он имеет адрес локальной сети, который не будет маршрутизироваться. Поскольку ваш интернет-провайдер НЕ предоставил вам публичный адрес, маршрутизатор НЕ сможет выйти.
Если у вас есть другой общедоступный IP-адрес, создайте виртуальную конфигурацию eth на eth1 и правильно маршрутизируйте ее. Тогда ваш роутер тоже может выйти из строя.