Как делают меня grep без ведущих пробелов?

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

Вход в систему с открытым ключом вместо пароля на самом деле имеет тенденцию увеличивать безопасность. Если Ваш пароль не достаточно силен, он может быть вынужден скотами взломщиком с достаточной пропускной способностью. Если у взломщика нет копии Вашего файла секретных ключей, ключ RSA эффективно не может быть вынужден скотами (1024-разрядный ключ эквивалентен чему-то как пароль с 160 символами, сделанный из случайных чувствительных к регистру букв и цифр). Кто-то, кто следит за Вашим плечом, смог видеть Ваш пароль и Ваш ключевой пароль, но с ключом они должны будут также получить ключ.

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

Открытый ключ представляет элемент воздействия конфиденциальности: если кто-то знает, что Вы использовали тот же открытый ключ, чтобы войти в A и войти в B, они знают, что тот же человек вошел в A и B. Просто обладание открытым ключом делает Вас подозреваемым, что у Вас также есть закрытый ключ, таким образом, Вы теряете некоторую анонимность. Но это обычно незначительно, особенно если Вы просто храните ключ ~/.ssh где только системные администраторы (кто также знает, от какого IP-адреса Вы вошли в систему) видят его.

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

17
10.09.2011, 00:15
4 ответа

Создайте тестовые файлы

echo -e "\t   foo-somethingfoo" >something.foo
echo "    bar-bar-somethingbar" >something.bar_bar
echo "baz-baz-baz-somethingbaz" >something.baz_baz_baz
echo "  spaces    something  s" >something.spaces

произведите полный великолепный цвет :)

grep --colour=always "something" something.* | 
 sed -re  's/^([^:]+):(\x1b\[m\x1b\[K)[[:space:]]*(.*)/\1\x01\2\3/' |
   column -s $'\x01' -t

вывод (выполняет его для получения цвета).

something.bar_bar      bar-bar-somethingbar
something.baz_baz_baz  baz-baz-baz-somethingbaz
something.foo          foo-somethingfoo
something.spaces       spaces    something  s

Протестированный в gnome-terminal, konsole, terminator, xterm

4
27.01.2020, 19:47
  • 1
    хорошая работа! немного проблемы, тем не менее, Вы забываете соответствовать \t символы –  Andrew 10.09.2011, 02:42
  • 2
    \t ?... Это не использует \t для разделителя это использует $ '\x01' (преобразуйте в шестнадцатеричную систему 01)... или Вы имеете в виду что-то еще? –  Peter.O 10.09.2011, 02:57
  • 3
    , который я имею в виду, там может вести табулирование \t а также ведущие пробелы \s –  Andrew 10.09.2011, 03:07
  • 4
    ... зафиксирован. Измененный ​' '​​ к [[:space:]] ... Если Вы хотите только полагать, что ВКЛАДКА и ПРОСТРАНСТВО и не весь пробел, используют это вместо этого: [ \t] –  Peter.O 15.06.2012, 04:04

Можно просто устранить их использование sed

grep blah filename.foo | sed -e 's/^[ \t]*//'

Это удалит ведущие пробелы из вывода

6
27.01.2020, 19:47
  • 1
    Это не будет иметь никакого эффекта, так как нет никаких пробелов в начале никакой строки в выводе. –  Abhishek A 10.09.2011, 11:14

Принятие Вы ищете шаблон re (основное регулярное выражение) в одном файле, и требуется разделить ведущий пробел от всех согласующих отрезков длинной линии:

sed -n -e 's/^[[:blank:]]*//' -e '/re/p' thefile.c

(на самом деле это разделяет все ведущие пробелы сначала и затем ищет шаблон, но результатом является то же),

Выполнять последующую обработку grep вывод вместо этого (как в Вашем отредактированном вопросе):

grep re * | sed 's/:[[:blank:]]*/: /'

Шаблон [[:blank:]]* нуль соответствий или больше пробелов или вкладок.

6
27.01.2020, 19:47
  • 1
    Спасибо, последний отрывок хорошо работает. Там какой-либо путь состоит в том, чтобы сохранить цвет вывода? –  Andrew 10.09.2011, 00:17
  • 2
    Цвет? Назовите меня старомодным, но мой терминал является строго черным и оранжевым... (это, "Я не знаю"). –  Kusalananda♦ 10.09.2011, 00:20
  • 3
    Используйте - color=always (принятие GNU grep) на вызове grep. Вызов sed не удаляет цвета, это - сам grep, который не использует цвет, когда вывод не переходит к терминалу (со значением по умолчанию - color=auto). "всегда" силы это к, ну, в общем, всегда использует цвет. –  Jürgen A. Erhard 10.09.2011, 00:37
  • 4
    @Jurgen, спасибо, но с --color=always этот regexp не работает:/ –  Andrew 10.09.2011, 00:50
  • 5
    О, скорлупки, Вы правы. Поэтому существуют управляющие последовательности (для цвета) между двоеточием и пробелом. Вы могли поместить escape-последовательности в вызов sed (последовательность, по крайней мере, для стандарта трясины vt100 эмуляция (xterm, экран, и т.д.) "\033 [m\033 [K". Я думаю.; D –  Jürgen A. Erhard 11.09.2011, 18:55

sed -n '/pattern/p' файл| sed -r "s/\s+//g"

-1
27.01.2020, 19:47

Теги

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