Использование ограничения скорости tc для всего трафика, кроме одного IP

Si desea ver si hay algún directorio que coincida con ese patrón de nombre, podría findimprimir una salida ficticia para ellos y ver si la salida estaba vacía. P.ej.:

if [[ "$(find -type d -name "dir*" -printf.)" ]] ; then
    echo "some matching directory exists"
else 
    echo "no matching directory exists"
fi

También puede hacer que findejecute un comando para los archivos que encontró, simplemente agregando -exec bash -c '...' _ {} \;después de -printf. Si el comando no produce ningún resultado, debería estar bien.

Empeora un poco si necesita capturar la salida del comando iniciado por findy mantenerla separada de la salida ficticia :, necesitará archivos temporales o trucos de redirección. Esto debería ejecutar somecmden cualquier directorio que coincida con find, dirigiendo la salida de las ejecuciones somecmda la salida estándar de los scripts, y luego informarle si hubo alguna coincidencia.

exec 3>&1
any=$(find -type d -name "dir*" -printf. -exec bash -c 'somecmd "$1" >&3' _ {} \; )
if [[ "$any" ]] ; then
    echo "matching directories were processed"
else 
    echo "no matching directory exists"
fi
exec 3>&-

Por supuesto, si el comando iniciado porfindsiempre produce salida, no hay necesidad de la salida ficticia. Simplemente capture lo que findimprima y vea si estaba vacío.

0
11.06.2019, 13:11
1 ответ

Вы можете добавить фильтр, который будет сопоставлять этот IP-адрес с пустым действием , которое будет классифицировать пакет как «проходной» без прохождения дополнительных фильтров. Поскольку без указания приоритета порядок не может быть угадан, оба фильтра должны иметь приоритет (, также известный как приоритет или приоритет ). Поэтому, если вы хотите избавить IP 192.0.2.10 от ограничения скорости, вы можете заменить свой фильтр этими двумя:

tc filter add dev eth1 parent ffff: protocol ip priority 1 \
   u32 match ip src 192.0.2.10 action pass
tc filter add dev eth1 parent ffff: protocol ip priority 2 \
   u32 match ip sport 22 0xffff action police rate 800kbit burst 24000 drop flowid :1

Обратите внимание, что полиция также является действием, но ключевое слово action является необязательным (, в то время как оно должно быть указано для пустого действия только с опцией pass ).

Кроме того, если это все еще подходит для этого случая, следует рассмотреть возможность использования формирования (задержки перед отбрасыванием )исходящего трафика, а не (отбрасывание только )входящего трафика :это, вероятно, улучшит производительность (и позволит избежать дублирования пакетов в сети из-за отбрасывания ).

0
28.01.2020, 03:36

Теги

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