Мне нужно заблокировать определенный URL-адрес в Squid3

Быстрое решение в Perl:

perl -lane '$a = -1; for(0..$#F) {$a = $_ + 1 if $F[$_] =~ /^ssh-|^ecdsa-/; };
    die if $a == -1;  $p = (4 - length($F[$a]) % 4) % 4; 
    $F[$a] .= "=" x $p;  print join " ", @F' < authorized_keys > authorized_keys2

Для каждой строки (-n) авторазделите (-a) поля на @F вдоль пробелов, затем найдите поле, содержащее тип ключа, следующее - ключ. Вычтите из 4 длину по модулю 4, чтобы получить количество знаков =, которые нам нужно добавить, кроме того, возьмите еще один модуль, чтобы превратить 4 в 0 в случае, если поле уже имеет правильную длину.

В руководстве сказано, что

открытый ключ протокола 2 состоит из: options, keytype, base64-encoded key, comment. Поле options является необязательным; его наличие определяется тем, начинается ли строка с числа или нет

но это не совсем верно, поскольку типы ключей v2 также не начинаются с чисел. Поле options может содержать пробелы, поэтому позиция типа ключа может быть любой. На самом деле нам следует разобрать опции, чтобы найти любые строки с кавычками, но эвристический поиск известных типов ключей не помешает.

0
30.08.2015, 10:33
0 ответов

Теги

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