Питхон

Питхон Сцрипт за надгледање мрежне везе

Питхон Сцрипт за надгледање мрежне везе
Потреба да наши уређаји буду увек повезани на Интернет постаје више основна потреба него додатна привилегија.

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

У данашњем упутству направићемо једноставан мрежни монитор који непрестано надгледа вашу интернет везу слањем захтева за пинг екстерном ресурсу. Скрипта коју ћемо створити такође ће водити евиденцију када Интернет не ради и трајање застоја:

Захтеви пројекта

За овај пројекат требат ће нам само:

Логика пројекта

Пре него што заронимо у део кодирања, хајде да разговарамо и разумемо шта покушавамо да постигнемо:

Шта је мрежни рад и застоји?

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

Како одредити застоје

Сад кад знамо шта је застој на Интернету, можда се питате: „како да га одредимо?”

Без компликовања кода, можемо ићи са пингом. Пинг је метода којом непрекидно пингамо поуздан сервер - можда Цлоудфларе или Гоогле ДНС - а затим чекамо одговор.

Ако пингамо сервер и нема одговора, забележимо то одређено време и настављамо пинг док не примимо пинг и забележимо време.

Имајући временску разлику, можемо да приметимо када је интернет био закинут и колико дуго.

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

Ево дијаграма тока који објашњава овај концепт:

Причање је јефтино; заронимо сада у код који показује како применити ову логику:

Покажи ми сада код

Као и обично, у Питхону започињемо увозом потребних библиотека. Даље, креирамо датотеку дневника у тренутном радном директоријуму.

Библиотеку сокета користимо за слање захтева на спољну ИП адресу у првој функцији. За овај пример користимо Цлоудфларе јавну ДНС адресу која има веома високо време рада. Такође преносимо порт, а пошто је ДНС сервер, користите порт 53.

Затим потврђујемо да имамо приступ директоријуму датотеке дневника и излазимо ако немамо приступ.

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

импорт соцкет
време увоза
импорт датетиме
импорт ос
импорт сис
ЛОГ_ФНАМЕ = "мрежа.Пријава"
ФИЛЕ = ос.пут.придружити се (ос.гетцвд (), ЛОГ_ФНАМЕ)
деф сенд_пинг_рекуест (хост = "1.1.1.1 ", порт = 53, временско ограничење = 3):
покушати:
утичница.сетдефаулттимеоут (тимеоут)
с = утичница.утичница (утичница.АФ_ИНЕТ, соцкет.СОЦК_СТРЕАМ)
с.повезивање ((хост, порт))
осим ОСЕррор као грешке:
повратак Нетачно
иначе:
с.Близу()
повратак Тачно
деф врите_пермиссион_цхецк ():
покушати:
са отвореним (ФИЛЕ, "а") као датотека:
проћи
осим ОСЕррор као грешке:
принт ("Креирање датотеке дневника није успело")
сис.излаз ()
коначно:
проћи
деф израчунај_време (старт, стоп):
разлика у времену = стоп - старт
сецондс = флоат (стр (временска разлика.укупно_секунди ()))
ретурн стр (датетиме.тимеделта (секунде = секунде)).разделити(".") [0]
деф мон_нет_цоннецтион (пинг_фрек = 2):
монитор_старт_тиме = датум и време.Датум време.Сада()
мотд = "Надзор мрежне везе започет у:" + стр (монитор_старт_тиме).разделити(".") [0] +" Слање захтева за пинг за "+ стр (пинг_фрек) +" секунди "
принт (мотд)
са отвореним (ФИЛЕ, "а") као датотека:
датотека.напиши ("\ н")
датотека.писање (мотд + "\ н")
вхиле Труе:
ако сенд_пинг_рекуест ():
време.спавање (пинг_фрек)
иначе:
довн_тиме = датум и време.Датум време.Сада()
фаил_мсг = "Мрежна веза није доступна на:" + стр (време_доња).разделити(".") [0]
испис (фаил_мсг)
са отвореним (ФИЛЕ, "а") као датотека:
датотека.писање (фаил_мсг + "\ н")
и = 0
а не сенд_пинг_рекуест ():
време.спавање (1)
и + = 1
ако и> = 3600:
и = 0
сада = датум и време.Датум време.Сада()
цонтиноус_мессаге = "Мрежна недоступност постојана на:" + стр (сада).разделити(".") [0]
принт (цонтиноус_мессаге)
са отвореним (ФИЛЕ, "а") као датотека:
датотека.писање (континуирана_порука + "\ н")
уп_тиме = датум и време.Датум време.Сада()
уптиме_мессаге = "Мрежна повезаност враћена у:" + стр (уп_тиме).разделити(".") [0]
довн_тиме = израчунај_време (тиме_тиме, уп_тиме)
_м = "Мрежна веза није била доступна за" + време_застоја
испис (уптиме_мессаге)
испис (_м)
са отвореним (ФИЛЕ, "а") као датотека:
датотека.запис (уптиме_мессаге + "\ н")
датотека.напиши (_м + "\ н")
мон_нет_цоннецтион ()

Ако покренете ову скрипту, добићете излаз сличан ономе приказаном доле:

Закључак

Користећи горњу скрипту, можемо пратити када се мрежна веза изгуби и непрестано је евидентирати док не постане доступна. Ова једноставна скрипта отворена је за побољшања. Слободно прилагодите код према вашим потребама и проширите га.

Како појачати ФПС у Линуку?
ФПС је скраћеница за Фрејмова у секунди. Задатак ФПС-а је да мери брзину кадрова у репродукцијама видео записа или играчким перформансама. Једноставни...
Најпопуларније лабораторијске игре Оцулус Апп
Ако сте власник Оцулус слушалица, онда морате бити упознати са бочним учитавањем. Бочно учитавање је поступак инсталирања не-продавничког садржаја на ...
10 најбољих игара за играње на Убунту-у
Виндовс платформа је била једна од доминантних платформи за играње игара због огромног процента игара које се данас развијају да би подржале Виндовс. ...