30 Греп примера за системске администраторе

30 Grep Examples System Admins



Греп можете пронаћи дубоко у животињском мозгу Уник-а и Уник-ових оперативних система. То је основни програм који се користи за усклађивање узорака и написан је 70 -их година заједно са остатком УНИКС алата који познајемо и волимо (или мрзимо).

Док је учење о формалним језицима и регуларним изразима узбудљива тема. Учење греп -а има много више од регуларних израза. Да бисте започели с тим и да бисте видели лепоту и елеганцију грепа, морате прво видети неке примере из стварног света.







Примери који су вам згодни и чине ваш живот мало лакшим. Ево 30 таквих уобичајених случајева и опција грепа.



1. пс аук | греп

ПС аук наводи све процесе и с њима повезане пидове. Али често је овај списак предуг да би га човек могао прегледати. Пребацивањем излаза у греп команду можете навести процесе који се покрећу имајући у виду врло специфичну апликацију. На пример, то може бити ссхд или нгинк или хттпд.



# пс то | греп ссхд
корен400 0.0 0.2 69944 5624? Сс17:47 0: 00/уср/сбин/ссхд
корен1076 0.2 0.3 95204 6816? Сс18:29 0: 00 ссхд: роот@птс/0
корен1093 0.0 0.0 12784 932птс/0С+18:29 0: 00дршкассхд

2. Грепирање ваших ИП адреса

У већини оперативних система можете навести све своје мрежне интерфејсе и ИП адресу која је додељена том интерфејсу помоћу команде ифцонфиг или ип аддр. Обе ове команде ће исписати много додатних информација. Али ако желите да одштампате само ИП адресу (рецимо за скрипте љуске), онда можете користити наредбу испод:





$ип аддр | дршкаинет| авк '{принт $ 2; } '
$ип аддр | дршка -ининет| авк '{принт $ 2; } ' #За линије са само инет, а не инет6 (ИПв6)

Команда ип аддр добија све детаље (укључујући ИП адресе), затим се доставља до друге команде греп инет која емитује само редове са инет -ом у њима. Ово се затим преноси у авк принт изјаву која штампа другу реч у сваком реду (поједностављено речено).

П.С: Ово можете учинити и без грепа ако добро знате.



3. Гледајући неуспеле покушаје ССХ -а

Ако имате сервер са Интернетом, са јавним ИП -ом, он ће се непрестано бомбардовати покушајима ССХ -а, а ако дозволите корисницима да имају ССХ приступ заснован на лозинци (смернице које не препоручујем), можете видети све такве неуспеле покушаје користећи следећа греп команда:

# цат /вар/лог/аутх.лог | греп Фаил
Узорак стављен
Дец5 16:двадесет: 03 дебиан ссхд[509]: Неуспјела лозинказароот са порта 192.168.0.10052374ссх2
Дец5 16:двадесет: 07 дебиан ссхд[509]: Неуспјела лозинказароот са порта 192.168.0.10052374ссх2
Дец5 16:двадесет:Једанаестдебиан ссхд[509]: Неуспјела лозинказароот са порта 192.168.0.10052374ссх2

4. Превођење Грепа до Уник -а

Греп ће понекад исписати много информација. У горњем примеру, један ИП је можда покушавао да уђе у ваш систем. У већини случајева постоји само неколико таквих увредљивих ИП адреса које морате јединствено идентификовати и ставити на црну листу.

#мачка /где/Пријава/аутх.лог| дршка „Неуспех“ | уник 3

Наредба уник треба да штампа само јединствене редове. Уник -ф 3 прескаче прва три поља (да би превидео временске ознаке које се никада не понављају), а затим почиње да тражи јединствене линије.

5. Грепирање за поруке о грешци

Коришћење Грепа за евиденцију приступа и грешака није ограничено само на ССХ. Веб сервери (попут Нгинк -а) грешке у евиденцији и евиденције приступа прилично педантно. Ако поставите скрипте за надгледање које вам шаљу упозорења када греп 404 врати нову вредност. То може бити врло корисно.

# греп -в '404' /вар/ввв/нгинк/аццесс.лог

192.168.0.100 - -[06/Дец/2018: 02:двадесет:29+0530] 'ГЕТ /фавицон.ицо ХТТП /1.1' 404 200
'хттп://192.168.0.102/' 'Мозилла/5.0 (Виндовс НТ 10.0; Вин64; к64)
АпплеВебКит/537.36 (КХТМЛ, попут Гецко) Цхроме/70.0.3538.110 Сафари/537.36 '


192.168.0.101 - -[06/Дец/2018: 02:Четири, пет:16+0530] 'ГЕТ /фавицон.ицо ХТТП /1.1' 404 143
'хттп://192.168.0.102/' 'Мозилла/5.0 (иПад; ЦПУ ОС 12_1 попут Мац ОС Кс)
АпплеВебКит/605.1.15 (КХТМЛ, попут Гецко) Верзија/12.0 Мобиле/15Е148 Сафари/604.1 '

Регекс можда није 404, већ неки други филтрирање регуларних израза само за мобилне клијенте или само Аппле уређаје који прегледавају веб страницу. Ово вам омогућава дубљи увид у перформансе ваше апликације.

6. Листа пакета

За системе засноване на Дебиану, дпкг -л наводи све пакете инсталиране на вашем систему. То можете пренети у греп команду да бисте потражили пакете који припадају одређеној апликацији. На пример:

#дпкг -тхе | дршка 'Дошао сам'

7. греп -в имена датотека

Да наведете све редове који немојте садрже дати образац, користите заставицу -в. То је у суштини супротно од обичне греп команде.

8. греп -л

Он наводи све датотеке које садрже барем једно појављивање испорученог узорка. Ово је корисно када тражите образац у директоријуму са више датотека. Штампа само назив датотеке, а не и одређену линију са шаблоном.

9. Опција једне речи -в

$дршка -ин <ШАБЛОН>филеНамес

Заставица -в говори грепу да тражи дати образац као целу реч, а не само као подниз у реду. На пример, раније смо грепали за ИП адресу и образац инет штампао редове са обојицом инет и инет6 наводећи и ИПв4 и ИПв6 адресе. Али ако смо користили -в заставу само линије са инет као реч којој претходи и иза које су размаци ваљано подударање.

10. Проширени регуларни израз

Често ћете открити да су регуларни изрази изворни за Греп помало ограничавајући. У већини скрипти и упутстава наћи ћете употребу -Е заставице и то ће вам омогућити да унесете образац у оно што се назива проширени режим.

Ево наредби греп и греп -Е за тражење речи Суперман и Спидерман.

$дршка ' (Супер | Спидер ) ман'текст
$дршка '(Супер | Спидер) ман'текст

Као што видите, проширену верзију је много лакше читати.

11. Греп за своје контејнере

Ако имате велики скуп контејнера који ради на вашем хосту, можете их грегпати по имену слике, статусу, портовима које излажу и многим другим атрибутима. На пример,

$доцкерпс | дршка [имагеНаме]

12. Греп за своје махуне

Док смо на теми контејнера. Кубернетес често имају тенденцију да покрећу више подс под одређеном имплементацијом. Иако свака махуна има јединствено име, у датом простору имена обично почињу именом имплементације. То можемо грепати и навести све подс -ове повезане са датом имплементацијом.

$кубецтл добити махуне| дршка <деплоиментНаме>

13. Грип за велике податке

Често такозвана анализа великих података укључује једноставно претраживање, сортирање и пребројавање образаца у датом скупу података. УНИКС помоћни програми ниског нивоа, попут греп, уник, вц, посебно су добри у томе. Овај пост на блогу приказује леп пример задатка обављеног у само неколико секунди коришћењем грепа и других Уник помоћних програма, док је Хадооп -у требало скоро пола сата.

На пример, овај скуп података је величине преко 1,7 ГБ. Садржи информације о мноштву шаховских утакмица, укључујући потезе, ко је победио итд. Заинтересовани смо само за резултате, па извршавамо следећу команду:

$дршка 'Резултат'милионска база-2.22.пгн| врста | уник
221 [Резултат'*']
653728 [Резултат'0-1']
852305 [Резултат'1-0']
690934 [Резултат'1 / 2-1 / 2']

Ово је трајало око 15 секунди на 4-годишњем 2-језгарном/4-нитном процесору. Дакле, следећи пут када решавате проблем великих података. Размислите можете ли уместо тога користити греп.

14. греп –боја = ауто

Ова опција омогућава грепу да истакне узорак унутар линије на којој је пронађен.

15. греп -и

Подударање Греп шаблона је инхерентно осетљиво на велика и мала слова. Али ако вас то не занима, употреба -и заставице учинит ће греп неосетљивим.

16. греп -н

Заставица -н ће приказати бројеве редова тако да не морате бринути о проналажењу исте линије касније.

17. гит греп

Гит, систем за контролу верзија, сам има уграђену греп команду која ради прилично слично вашем обичном грепу. Али може се користити за тражење образаца на било ком уређеном стаблу користећи изворни гит ЦЛИ, уместо досадних цеви. На пример, ако сте у главној грани свог репо -а, можете греп преко репо -а помоћу:

(господару)$гит греп <шаблон>

18. греп -о

-О заставица је заиста корисна када покушавате да отклоните грешке у регуларном изразу. Штампаће само одговарајући део линије, уместо целе линије. Дакле, у случају да добијате превише нежељених линија за испоручени образац, и не можете разумети зашто се то дешава. Помоћу заставице -о можете одштампати узастопни подниз и образложити свој регек уназад.

19. греп -к

-Кс заставица ће исписати линију, ако и само ако, цела линија одговара вашем испорученом регуларном изразу. Ово је донекле слично заставици -в која је штампала ред ако се само цела реч подудара са испорученим регуларним изразом.

20. греп -Т

Када се бавите записницима и излазима из скрипти љуске, већа је вероватноћа да ћете наићи на чврсте картице да бисте разликовали различите колоне излаза. Заставица -Т ће уредно поравнати ове картице тако да су колоне уредно распоређене, чинећи излаз читљивим.

21. греп -к

Ово потискује излаз и тихо извршава греп команду. Врло корисно при замени текста или покретању греп -а у даемон скрипти.

22. греп -П

Људи који су навикли на перл синтаксу регуларног израза могу користити -П заставу да користе управо то. Не морате да учите основни регуларни израз, који греп подразумевано користи.

23. греп -Д [АКЦИЈА]

У Уник -у се скоро све може третирати као датотека. Сходно томе, било који уређај, утичница или ФИФО ток података може се уносити у греп. Можете користити -Д заставицу коју следи АЦТИОН (подразумевана радња је РЕАД). Неколико других опција су СКИП за тихо прескакање одређених уређаја и РЕЦУРСЕ за рекурзивно пролажење кроз директоријуме и везе.

24. Понављање

Ако тражите дати узорак који је понављање познатог једноставнијег узорка, онда користите увијене заграде да означите број понављања

$дршка [0-9]{10}

Ово штампа редове који садрже низове дужине 10 или више цифара.

25. Стенографије за понављање

Неки посебни знакови резервисани су за одређену врсту понављања узорака. Можете их користити уместо коврчавих протеза, ако одговарају вашим потребама.

? : Узорак који претходи упитнику треба да се подудара са нулом или једном.

*: Узорак који претходи звезди треба да се подудара са нулом или више пута.

+: Узорак који претходи плус треба да се подудара један или више пута.

25. Одступања бајтова

Ако желите да видите помак бајтова линија у којима се налази одговарајући израз, можете користити -б заставицу да одштампате и помаке. Да бисте одштампали офсет само одговарајућег дела линије, можете користити заставицу -б са ознаком -о.

$дршка -или <ШАБЛОН> [назив документа]

Одступање једноставно значи, после колико бајтова од почетка датотеке почиње одговарајући низ.

26. егреп, фгреп и ргерп

Често ћете видети позивање егрепа да бисте користили синтаксу проширеног регуларног израза о којој смо раније говорили. Међутим, ово је застарела синтакса и препоручује се да је избегавате. Уместо тога користите греп -Е. Слично, користите греп -Ф, уместо фгреп и греп -р уместо ргреп.

27. греп -з

Понекад унос грепа није ред који завршава знаком новог реда. На пример, ако обрађујете листу имена датотека, они могу доћи из различитих извора. -З застава говори греп -у да третира НУЛЛ знак као завршетак линије. Ово вам омогућава да третирате долазни ток као било коју обичну текстуалну датотеку.

28. греп -а [име датотеке]

Заставица -а говори греп -у да третира испоручену датотеку као да је то обичан текст. Датотека може бити бинарна, али греп ће третирати унутрашњи садржај као да је текст.

29. греп -У [име датотеке]

Заставица -У говори грепу да третира испоручене датотеке као да су бинарне датотеке, а не текст. Подразумевано греп погађа тип датотеке гледајући првих неколико бајтова. Коришћење ове заставице поништава нагађање.

Греп -м НУМ

Код великих датотека грепање за израз може потрајати заувек. Међутим, ако желите да проверите само првих НУМ бројева подударања, можете да користите заставицу -м да бисте то постигли. Бржи је и излаз је такође често управљив.

Закључак

Доста свакодневних послова системског администратора укључује просијавање кроз велики део текста. То могу бити безбедносни дневници, евиденције са вашег веб или поштанског сервера, активности корисника или чак велики текст ман страница. Греп вам даје додатну флексибилност при решавању ових случајева употребе.

Надајмо се да вам је горе наведених неколико примера и случајева коришћења помогло да боље разумете овај живи фосил софтвера.