Можно ли заблокировать веб-сайт через системный брандмауэр Linux для браузера, использующего DNS через HTTPS?

Я думаю, вы хотите, чтобы строка cpu Usageотображалась в той же строке каждый раз и сразу же после строки cpu Idle. К добиться того, что вы можете использовать клеммы tputиel(clr_eol)возможность удалить строку иcuu(parm_up_cursor)переместить n строк вверх. Вы можете прочитать о возможностях терминала в man terminfo. Твой скрипт будет выглядеть так:

#!/bin/bash

PREV_CPU_USE=0
PREV_CPU_IDLE=0
PREV_EPOCH_TIME=0

# Setting the delimiter
IFS=$'\n'
counter=0

while true; do
  # Getting the total CPU usage
  CPU_USAGE=$(head -n 1 /proc/stat)

  # Getting the Linux Epoch time in seconds
  EPOCH_TIME=$(date +%s)

  # Splitting the /proc/stat output
  IFS=" " read -ra USAGE_ARRAY <<< "$CPU_USAGE"

  # Calculating the used CPU time, CPU idle time and CPU total time
  CPU_USE=$((USAGE_ARRAY[1] + USAGE_ARRAY[2] + USAGE_ARRAY[3] + USAGE_ARRAY[6] + USAGE_ARRAY[7] + USAGE_ARRAY[8] ))
  CPU_IDLE=$((USAGE_ARRAY[4] + USAGE_ARRAY[5]))

  # Calculating the differences
  DIFF_USE=$((CPU_USE - PREV_CPU_USE))
  DIFF_IDLE=$((CPU_IDLE - PREV_CPU_IDLE))
  DIFF_TOTAL=$((DIFF_USE + DIFF_IDLE))
  DIFF_TIME=$((EPOCH_TIME - PREV_EPOCH_TIME))

  printf "\r%s%s Usage: %d (counter = %d)\n" "$(tput el)" "${USAGE_ARRAY[0]}" "$((DIFF_USE*100/(DIFF_TOTAL*DIFF_TIME)))" "$counter"
  printf "\r%s%s Idle: %d (counter = %d)" "$(tput el)" "${USAGE_ARRAY[0]}" "$((DIFF_IDLE*100/(DIFF_TOTAL*DIFF_TIME)))" "$counter"
  counter=$((counter + 1))

  tput cuu 1

  # Assigning the old values to the PREV_* values
  PREV_CPU_USE=$CPU_USE
  PREV_CPU_IDLE=$CPU_IDLE
  PREV_EPOCH_TIME=$EPOCH_TIME

  # Sleep for one second 
  sleep 1
done

Я добавил дополнительную counterпеременную для целей отладки. Это увеличивается после каждой печати, чтобы сообщить пользователю, что старая строка заменяется новой строкой на экране.

Я также заменил ваши звонки на echoна printf, так как это удобнее.

0
01.10.2021, 16:53
1 ответ

iptablesможет блокировать по именам хостов, изman iptables:

-s, --source address Source specification. Address can be either a network name, a hostname, a network IP address (with /mask), or a plain IP address.

Причина, по которой это не работает для вас, заключается в том, что ваш iptablesиспользует локально настроенный преобразователь для определения IP-адресов Facebook, в то время как Firefox получает адреса от другого провайдера DNS. Поскольку Facebook использует облако, его IP-адреса различаются между провайдерами DNS и географическими местоположениями, что в конечном итоге означает, что iptablesрешение вряд ли будет работать.

Вместо этого вы можете использовать групповые политики для Firefox, чтобы блокировать веб-сайты, например.https://github.com/mozilla/policy-templates/blob/master/README.md#websitefilterhttps://github.com/mozilla/policy-templates/releases

. проверьте этот ответ здесь:https://support.mozilla.org/en-US/questions/1260799

1
01.10.2021, 20:57

Теги

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