Объедините два результата команды с одной строкой при перенаправлении stdout

Существует три части в Вашем вопросе на самом деле:

  1. Выберите блокирующуюся стратегию на сетевом уровне: какие соединения позволяются?
  2. Реализация та стратегия блокирования.
  3. … способом, который только влияет на определенных пользователей.

Блокирование веб-сайтов не легко. На самом деле я сказал бы, что невозможно, полностью блокируют веб-сайт, полностью не блокируя доступ к сети. Все, что можно сделать, делают жизнь заблокированного пользователя более трудной, но если они действительно захотят, то они смогут получить доступ к заблокированному сайту с увеличенной задержкой и уменьшенной пропускной способностью, если они имеют достаточно технической изощренности и возможно могут полагаться на внешний сервер. Для обычного просмотра пользователи могут посмотреть на кэшируемые копии на Google или иначе. Пользователи, у которых есть внешний сервер, могут использовать его в качестве прокси, или они могут использовать существующие прокси (открытые прокси приходят и уходят слишком быстро для блокирования полезно).

Можно попытаться блокироваться доменным именем или IP-адресом. IP-адреса могли бы работать на большой сайт как Facebook, хотя необходимо будет не отставать от всех их перемещений сервера. Это не будет работать с меньшими сайтами, которые совместно размещены.

Легкий способ заблокировать некоторые веб-сайты состоит в том, чтобы заблокировать их определение имен DNS. Просто это вероятно, делают жизнь пользователей достаточно раздражающей, что они работают вокруг Вашего блока при помощи внешнего прокси (который действительно требует некоторой изощренности). Но нет никакого практического способа настроить разрешение DNS, в расчете на пользователя (это не невозможно в принципе, но необходимо было бы настроить работу identd и найдите сервер DNS, который говорит с ним).

Естественный способ заблокировать веб-сайты состоит в том, чтобы заблокировать прямой веб-доступ и предоставить только доступ через веб-прокси. Сквид является фактическим стандартом. Можно настроить его как прозрачный прокси (все соединения на портах 80, и 443 направляются к машине прокси; нечетный веб-сайт на другом порте может или не может работать в зависимости от того, как Вы настраиваете свой брандмауэр), или как явный прокси (пользователи должны настроить свой браузер; только машина с прокси может соединиться с внешней стороной).

Простой способ реализовать настройки в расчете на пользователя состоит в том, чтобы потребовать аутентификации в прокси. Затем наличие разных уровней доступа является заданием для прокси. Для предотвращения требования пароля можно также сделать использование прокси ident (хотя это добавляет задержку для всех доступов).

Ваша задача будет легче, если можно выполнить прокси на другой машине (это может быть виртуальная машина). Выполнение всего на той же машине возможно, но сложно на Linux, и я подозреваю, что это также возможно-но-сложно на других нельдах.

8
04.09.2012, 00:39
2 ответа

Попытка, просто делающая:

echo $(date) $(acpi -t) >> your_log_file

Вы могли бы хотеть указать компактный формат даты для создания файла журнала более легким проанализировать и быть независимыми от настроек среды/локали (что-то как $(date +"%Y%m%d %H%M%S") например).

11
27.01.2020, 20:10

хорошо, возможно, в более старых системах (solaris8 f.e. ^^) без удара:

x=`date '+%Y%m%d %H%M%S'`; y=`acpi -t`; echo "$x $y" >>your_log_file
4
27.01.2020, 20:10
  • 1
    Даже Солярис 8 понимает $(…), это совместимо POSIX. Но необходимо использовать /usr/xpg4/bin/sh вместо /bin/sh, Солярис 8 /bin/sh все еще Оболочка Bourne. –  Gilles 'SO- stop being evil' 04.09.2012, 02:06
  • 2
    Aaah, никогда не использовал/usr/xpg4/bin/sh, мы сэкономим некоторые усилия в те дни с помощью просто Оболочку Bourne. –  wolf 04.09.2012, 13:25
  • 3
    Как этот... –  mikiemorales 18.07.2014, 23:38

Теги

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