Si të lexoni të dhëna nga një fole në Bash në Linux
Linja e komandës Linux ju lejon të merrni të dhëna ose duke dëgjuar në një prizë ose duke u lidhur me një prizë. Të dhënat mund të regjistrohen në një skedar teksti. Ne ju tregojmë se si.
Klientët dhe Serverët Socket
Prizat lejojnë softuerin në rrjet të komunikojë. Ato u implementuan për herë të parë në sistemin operativ 4.2BSD Unix, i cili u krijua në Universitetin e Kalifornisë, Berkeley, në vitin 1983. Ato u miratuan shpejt nga System V Unix dhe Microsoft Windows.
Një fole është një pikë fundore e një lidhjeje rrjeti softueri, e abstraguar në mënyrë që të mund të trajtohet si një dorezë skedari. Kjo do të thotë se përshtatet me parimin e përgjithshëm të dizajnit të Unix dhe Linux të çdo gjë është një skedar. Nuk nënkuptojmë prizën fizike në mur në të cilën lidhni kabllon tuaj të rrjetit.
Nëse një program lidhet me një prizë në një pjesë tjetër të softuerit, ai konsiderohet të jetë klienti i softuerit tjetër. Softueri që lejon softuerët e tjerë të kërkojnë lidhje quhet server. Këto terma përdoren në mënyrë të pavarur nga përdorime të tjera të klientit dhe serverit në botën e IT. Për të shmangur konfuzionin, ato nganjëherë quhen klient i foleve dhe server prizë për të hequr paqartësitë. Ne do t'i quajmë klientë dhe serverë.
Socket-et zbatohen si një ndërfaqe programimi aplikacioni (API), duke lejuar zhvilluesit e softuerit të thërrasin funksionalitetin e prizës nga brenda kodit të tyre. Kjo është mirë nëse jeni programues, por çfarë nëse nuk jeni? Apo ndoshta jeni, por rasti juaj i përdorimit nuk garanton shkrimin e një aplikacioni? Linux ofron mjete të linjës së komandës që ju lejojnë të përdorni serverë-bazë-socket dhe klientë socket, sipas nevojave tuaja, për të tërhequr ose marrë të dhëna nga procese të tjera të aktivizuara nga socket.
Marrëdhëniet nuk janë kurrë të lehta
Programet që do të përdorim janë nc
dhe ncat
. Këto dy shërbime kanë një marrëdhënie të çuditshme. Programi nc
është një rishkrim i ncat
, i cili është shumë më i vjetër se nc
. Por ncat
është rishkruar gjithashtu dhe tani na lejon të bëjmë disa gjëra që nc
nuk mund t'i bëjë. Dhe ka shumë implementime të ncat
, i cili në vetvete është një derivat i një mjeti të quajtur netcat
. Për më tepër, në shumicën e shpërndarjeve, nc
është një lidhje simbolike për ncat
dhe jo një program i veçantë.
Ne kontrolluam shpërndarjet e fundit Arch, Manjaro, Fedora dhe Ubuntu. I vetmi që kërkonte instalimin e veglave ishte Manjaro. Në Manjaro, ju duhet të instaloni paketën netcat
për të marrë nc
, por nuk merrni ncat
, ju merrni netcat< /kodi>. Dhe në Manjaro,
.nc
është një lidhje simbolike për netcat
sudo pacman -S netcat
Në fund të fundit, në Manjaro përdorni netcat
kur shihni ncat
në shembujt në këtë artikull.
Dëgjimi në një prizë
Nëse softueri dëgjon për lidhjet hyrëse të prizës, ai po vepron si një server. Çdo të dhënë që vjen përmes lidhjes së prizës thuhet se merret nga serveri. Ne mund ta përsërisim këtë sjellje shumë lehtë duke përdorur nc
. Çdo e dhënë e marrë shfaqet në dritaren e terminalit.
Duhet t'i themi nc
të dëgjojë për lidhje, duke përdorur opsionin -l
(dëgjo) dhe duhet të specifikojmë portën në të cilën do të dëgjojmë për lidhje. Çdo program klient ose proces që përpiqet të lidhet me këtë shembull të nc
duhet të përdorë të njëjtën portë. Ne i tregojmë nc
se në cilën port duhet të dëgjohet duke përdorur opsionin -p
(port).
Kjo komandë fillon nc
si një server prizë, duke dëgjuar për një lidhje në portin 6566:
nc -l -p 6566
Ndërsa pret për një lidhje hyrëse, nc
nuk prodhon asnjë dalje. Pasi të bëhet një lidhje, çdo informacion i marrë shfaqet në dritaren e terminalit. Këtu, një lidhje është bërë nga një program klienti që po e identifikon veten si klient 1.
Gjithçka e shfaqur nga nc
merret nga klienti. Ky klient ndodh që dërgon emrin e tij dhe një mesazh me numër që përmban orën dhe datën.
Kur klienti ndërpret lidhjen e tij, nc
përfundon dhe ju ktheheni në kërkesën e terminalit.
Dërgimi i të dhënave në një skedar
Për të kapur të dhënat nga klienti në një skedar, ne mund ta dërgojmë daljen nga nc
në një skedar duke përdorur ridrejtimin. Kjo komandë ruan të dhënat e marra në një skedar të quajtur logfile.txt.
nc -l -p 6566 > logfile.txt
Ju nuk do të shihni asnjë dalje - ai po futet në skedar - dhe, në mënyrë paradoksale, nuk do ta dini nëse një lidhje ka ndodhur derisa nc
të përfundojë. Kthimi në vijën e komandës tregon se një lidhje ka ndodhur dhe është ndërprerë nga klienti.
Ne mund të përdorim më pak
për të shqyrtuar përmbajtjen e skedarit logfile.txt.
less logile.txt
Më pas mund të lëvizni nëpër të dhëna dhe të kërkoni duke përdorur funksionet e integruara të më pak.
Dërgimi i të dhënave në një skedar dhe në dritaren e terminalit
Nëse dëshironi t'i shihni të dhënat duke lëvizur në dritaren e terminalit dhe t'i dërgoni ato në një skedar në të njëjtën kohë, dërgojeni daljen nga nc
në tee
.
nc -l -p 6566 | tee logfile.txt
Pranimi i Lidhjeve të Shumëfishta
Gjithçka është në rregull, por ka kufizime. Ne mund të pranojmë vetëm një lidhje. Ne jemi të kufizuar në marrjen e të dhënave nga një klient i vetëm. Gjithashtu, kur ai klient heq lidhjen, serveri ynë prizë nc
përfundon.
Nëse keni nevojë të pranoni lidhje të shumta, ne duhet të përdorim ncat
. do të na duhet t'i themi ncat
që të dëgjojë dhe të përdorë një portë të caktuar, ashtu siç bëmë me nc
. Por ne do të përdorim gjithashtu opsionin -k
(mbaj gjallë). Kjo i thotë ncat
të vazhdojë të funksionojë dhe të pranojë lidhje nga klientët edhe kur lidhja e fundit aktive bie.
Kjo do të thotë se ncat
do të funksionojë derisa të zgjedhim ta mbyllim atë me Ctrl-C. Lidhjet e reja do të pranohen nëse ncat
është aktualisht i lidhur me ndonjë klient apo jo.
ncat -k -l -p 6566
Ne mund të shohim të dhënat nga klientët e ndryshëm që shfaqen në dalje nga ncat
ndërsa lidhen.
Lidhja me një server
Ne gjithashtu mund të përdorim nc
si një klient prizë dhe të lidhemi me një program tjetër që pranon lidhje dhe vepron si server. Në këtë skenar, nc
është klienti i prizës. Për ta bërë këtë, duhet t'i tregojmë nc
se ku ndodhet softueri i serverit në rrjet.
Një mënyrë për ta bërë këtë është të siguroni një adresë IP dhe një numër porti. Nëse serveri është në të njëjtin kompjuter në të cilin po ekzekutojmë nc
, mund të përdorim adresën IP të kthimit të 127.0.0.1. Jo se nuk ka flamuj të përdorur për të treguar adresën e serverit dhe numrin e portit. Ne japim vetëm vlerat e duhura.
Për t'u lidhur me një server në të njëjtin PC, dhe duke përdorur portin 6566, mund të përdorim adresën IP të kthimit. Komanda për t'u përdorur është:
nc 127.0.0.1 6566
Të dhënat që nc
merr nga serveri lëvizin në dritaren e terminalit.
Nëse e dini emrin e rrjetit të kompjuterit që drejton softuerin e serverit, mund ta përdorni atë në vend të adresës IP.
nc sulaco 6566
Përdorni Ctrl+C për të prishur një lidhje.
E shpejtë dhe e lehtë
nc
dhe ncat
përshtaten kur nuk dëshiron të shkruash një mbajtës të personalizuar të prizës, por duhet të mbledhësh të dhëna nga ndonjë burim i aktivizuar nga priza. Ridrejtimi i daljes në një skedar ju lejon të rishikoni daljen duke përdorur less
dhe të analizoni skedarin duke përdorur mjete si grep
.