Как я могу написать сценарий bash, который сообщает мне, сколько часов осталось с 23:43 до 02:10?

Ну, если это для розыгрыша, то может сработать надуманный хак: используйте цель LOG iptables для регистрации каждого совпадения перенаправления перед тем, как на самом деле делать перенаправление. Затем иметь скрипт, который извлекает IP из лога и готовит их к iptables цепочки, с действием RETURN или что-то такое, так что правила перенаправления не будут достигнуты.

Я не думаю, что эта проблема может быть надежно решена на уровне iptables.

-2
06.10.2015, 18:16
1 ответ
$ t1="23:42"
$ t2="02:10"
$ e1=$( date -d "$t1" +%s )
$ e2=$( date -d "$t2" +%s )
$ if (( e1 > e2 )); then e2=$( date -d "$t2 tomorrow" +%s ); fi
$ date -d@$e1
Tue Oct  6 23:42:00 EDT 2015
$ date -d@$e2
Wed Oct  7 02:10:00 EDT 2015

Чтобы найти разницу, если вам не нужны дробные часы, используйте арифметику оболочки, иначе переведите в bc

$ diff=$(( (e2 - e1)/3600 ))
$ echo $diff
2
$ diff=$( echo "scale=2; ($e2-$e1)/3600" | bc)
$ echo $diff
2.46
2
28.01.2020, 05:16

Теги

Похожие вопросы