Как я использую регулярный оператор шаблона {m, n} в grep?

Почему не просто сделайте:

{ echo foo; echo bar;} > /tmp/p

Если Вы хотите, чтобы Ваш сценарий управления оставил канал открытым, можно сделать:

exec 3<> /tmp/p

Открытие именованного канала в режиме чтения-записи должно избежать, что, чтобы заблокироваться, если канал еще не был открыт. Это инстанцировало бы его, если бы это еще не было. Это работает над Linux, по крайней мере, но не гарантируется POSIX.

Кроме того (и портативно):

: < /tmp/p & exec 3> /tmp/p

Затем вместо того, чтобы иметь каждый процесс открывают именованный канал, можно также сделать:

cmd >&3

И в конце, Вы сделали бы:

exec 3>&-

Для закрытия конца записи для уведомления читателей, это закончено.

измените все <s к >s и <s к >s, если Вам нужна логика, чтобы быть наоборот.

7
14.02.2015, 15:19
3 ответа

По умолчанию grep использует Основные регулярные выражения , необходимо отказаться от скобок, чтобы grep совпадал с несколькими символами:

grep 't\{2\}' textfile

В качестве альтернативы можно использовать -E (или -P опцию для GNU grep, которая использует Perl Compatible Regular Expressions), поэтому в grep можно использовать Extended Regular Expressions, которые могут использовать скобки, не экранируя их:

grep -E 't{2}'
15
27.01.2020, 20:13

Да, беспокоится . Вы можете никогда не быть сгоревшим, но вы должны следовать за ним. Береженого Бог бережет.

Я админ сети в больнице. Это всегда плохое идея для подключения коробки непосредственно к Интернету. То, что вы видите, - это все тысячи автоматизированных сканеров, которые сканируют на уязвимость в Интернете. Я вижу эти и всевозможные вещи (сканирование порта, различные известные тесты уязвимости) для всех видов программного обеспечения (SSH, Telnet, FTP и т. Д.) На наших IDS
Ваша машина должна быть за решением брандмауэра / NAT, и вы должны портировать только необходимые порты в Интернет (80, 443 и т. Д.). Это относительно легко сделать.
Наличие чего-то, чего вы можете использовать для ManageMemt (SSH Telnet) - это плохое идею, чтобы столкнуться с Интернетом, потому что если - по какой-либо причине - в программном обеспечении SSH / Telnet на этом сервере есть ошибка, автоматизированный бот будет обнаруживать его в сердцебиение, и вы будете прикручены. Ошибки в программном обеспечении происходят все время, и это может занять некоторое время для выпуска патча или для вас запомнить, чтобы исправить его.

Если вам нужно удаленно управлять, посмотрите настроить что-то вроде решения VPN или если вы используете Windows, настройте шлюз сервисов терминалов для удаленного рабочего стола. Я знаю, что вы можете использовать отдельную коробку Linux или Windows с 2 никсами для настройки маршрутизации и удаленного доступа для VPN и NAT, если вы просто маленький магазин. В противном случае поставщики, такие как Cisco, имеют аппаратные брандмауэр / NAT Solutions (Cisco Asa).

Таким образом, поставьте свою машину за NAT. Только порт вперед порта, необходимые для запуска цели обслуживания. Не портируйте прямые сервисы, используемые для управления в Интернет, вместо этого посмотрите на VPN для удаленного управления.

P.S. Изменение портов SSH может помочь с объемом журнала, но он на самом деле не предотвращает доступ к SSH. Любая из тысяч автоматизированных поисков уязвимостей может и сделает сканирование порта, чтобы увидеть, какие порты слушают какие услуги. Вы можете сделать это сами с помощью под названием NMAP .

-121--13403-

Вы должны избежать скобок:

grep 't\{2\}' textfile

в противном случае { и } рассматриваются как буквальные символы.

7
27.01.2020, 20:13

Да, волнуйтесь . Вы можете никогда не быть сгоревшим, но вы должны следовать за ним. Береженого Бог бережет.

Я админ сети в больнице. Это всегда плохое идея подключения коробки непосредственно к Интернету. То, что вы видите, - это все тысячи автоматизированных сканеров, которые сканируют на уязвимость в Интернете. Я вижу эти и всевозможные вещи (сканирование порта, различные известные тесты уязний) для всех видов программного обеспечения (SSH, Telnet, FTP и т. Д.) На наших IDS в поле
Ваша машина должна быть за решением брандмауэра / NAT, и вы должны портировать только необходимые порты в Интернет (80, 443 и т. Д.). Это относительно легко сделать.
Наличие того, что вы можете использовать для ManageMemt (SSH Telnet) - это плохое представление, чтобы столкнуться с Интернетом, потому что если - по какой-либо причине - в программном обеспечении SSH / Telnet на этом сервере есть ошибка, автоматизированный бот будет обнаруживать его в сердцебиение, и вы будете прикручены. Ошибки в программном обеспечении происходят все время, и это может занять некоторое время для выпуска патча или для вас запомнить, чтобы исправить его.

Если вам нужно удаленно управлять, посмотрите на настройку чего-то вроде решения VPN или если вы используете Windows, настройте шлюз сервисов терминалов для удаленного рабочего стола. Я знаю, что вы можете использовать отдельную коробку Linux или Windows с 2 никсами для настройки маршрутизации и удаленного доступа для VPN и NAT, если вы просто маленький магазин. В противном случае поставщики, такие как Cisco, имеют аппаратные брандмауэр / NAT Solutions (Cisco Asa).

Таким образом, поставьте свою машину за NAT. Только порт вперед порта, необходимые для запуска цели обслуживания. Не портируйте прямые сервисы, используемые для управления в Интернет, вместо этого посмотрите на VPN для удаленного управления.

P.S. Изменение портов SSH может помочь с объемом журнала, но он на самом деле не предотвращает доступ к SSH. Любая из тысяч автоматизированных поисков уязвимостей может и сделает сканирование порта, чтобы увидеть, какие порты слушают какие услуги. Вы можете сделать это самостоятельно с помощью под названием NMAP .

-121--13403-

Вам нужно использовать -E ( - расширенное регенция ) или -P ( - -Прил-регеэксп ) вариант (с GNU GREP).

Согласно странице человека GNU GREP (1) о базовых против Базовых против расширенных регулярных выражений , т. Е. Если вы решите не использовать эти параметры:

в основных регулярных выражениях мета-символов?, + , {, |, (и) теряют свое особое значение; Вместо этого используйте обратные версии \?, \ +, \ {, \ |, \ (и \).

7
27.01.2020, 20:13

Теги

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