Hoppa yfir í efnið

Netið úr skelinni

Verkefnasafn

Þessi kafli hefur tilheyrandi verkefnasafn á fylgiþjóninum. Til að sækja það og byrja að leysa verkefnin geturðu keyrt skipunina:

fetch networking-from-the-shell

Linux-skelin er ekki bara til að vinna með skrár á eigin tölvu. Hún getur líka talað við önnur forrit og aðrar tölvur yfir net. Í þessum hluta ætlum við að skoða nokkur einföld tól sem leyfa okkur að sækja vefsíður og hlaða niður skrám, auk þess að flytja skrár á milli tölvunnar okkar og fylgiþjónsins.

Við förum ekki djúpt í netkerfi eða uppbyggingu þeirra hér. Við munum kafa mun dýpra í netkerfi og virkni þeirra síðar, sem og veftækni eins og HTTP í Vef-kaflanum. Hér ætlum við að einblína á hvernig hægt er að sækja og senda gögn yfir net.

Að sækja gögn yfir net

Skipanir eins og curl og wget gera í raun það sama og vafrar, þ.e. senda beiðni á vefþjón og fá svar til baka. Munurinn er sá að þau birta gögnin beint í skelinni eða vista þau í skrá, í stað þess að teikna upp vefsíðu.

curl

Skipunin curl (stytting á client URL) er eitt algengasta tólið til að sækja gögn af netinu. Með því að keyra skipunina

curl https://example.com
er svarið frá vefþjóninum skrifað beint á skjáinn. Í dæminu hér að ofan fáum við svar í HTML (Hyptertext markup language) sniði, sem er það snið sem vafrar nota til að birta vefsíður.

Ef við viljum vista svarið í skrá getum við notað -o til að segja curl hvert á að vista gögnin:

curl -o playground/example.html https://example.com

HTML er hannað með það í huga að teikna upp vefsíður, en stundum bjóða vefþjónar upp á að afhenda okkur gögn á öðru sniði beint í gegnum forritaskil (e. application programming interface eða API). Dæmi um það má sjá með

curl https://httpbin.org/json
en þessi forritaskil skila gögnum á JSON-sniði sem við fáum að kynnast síðar.

Ef skipunin virðist hanga

Skipanir sem eiga samskipti yfir neti bíða yfirleitt í ákveðinn tíma eftir svari, þar sem ýmislegt getur valdið hægagangi í nettengingum, svo sem hægt net, hægir netþjónar, o.s.frv. Höfum þá í huga að ef ekkert gerist í langan tíma má alltaf stöðva skipanir með Ctrl+C.

wget

Skipunin wget (stytting á web get) er annað algengt tól og er hentar sérstaklega þegar við viljum hlaða niður skrá. Ef við keyrum

wget https://example.com/
vistar wget svarið í skrá (index.html) í núverandi möppu. Þar sem þetta er hefðbundin vefsíða, vistast hún sem HTML skjal. Einnig er hægt að sækja aðrar tegundir skráa, svo sem myndir og skjöl, með wget. Við getum t.d. sótt mynd af kisa með
wget https://upload.wikimedia.org/wikipedia/commons/5/53/Sheba1.JPG
undir nafninu Sheb1.JPG, sem wget velur út frá vefslóðinni. Ef við viljum velja skráarnafn sjálf getum við nýtt okkur stillinguna -O,
wget -O kisi.jpg https://upload.wikimedia.org/wikipedia/commons/5/53/Sheba1.JPG
en í þessu tilfelli vistum við myndina undir nafninu kisi.jpg.

Myndir og fleira á fylgiþjóninum

Til að skoða myndir, PDF skjöl og annað sem sótt er á þjóna sem hafa ekki gluggakerfi, eins og fylgiþjónninn, þarf yfirleitt að sækja skrárnar á tölvu sem er með gluggakerfi, sem við lærum aðeins seinna í þessum kafla. Á fylgiþjóninum er þó búið að setja upp forritið chafa sem birtir myndina í skelinni með lituðum Unicode-táknum. Myndina, sem við sóttum rétt áðan og kölluðum kisa.jpg, má þannig virða fyrir sér með

chafa kisa.jpg
Sumar nútímaskeljar geta birt raunverulegar myndir, ekki bara nálgun með Unicode, og býður fylgiþjónninn einnig upp á forrit sem heitir yazi. Þetta forrit er í rauninni skráahirðir (e. file manager), ekki ósvipaður þeim sem við þekkjum úr gluggakerfum. Forritið býður upp á forskoðun á skrám eins og myndum og PDF-skjölum. Við getum opnað forskoðunina beint með
yazi kisa.jpg
en í sumum tilfellum gæti þurft að ýta á L eða Right til að fá myndina til að birtast.


Skráaflutningur yfir SSH

Skipanir eins og curl og wget sækja gögn af vefþjónum. Þegar við höfum hins vegar SSH-aðgang að Linux-þjóni getum við afritað skrár beint milli eigin tölvu og þjónsins.

Einföld afritun

Hægt er að nota skipunina scp (stytting á secure copy) til að flytja gögn til og frá þjónum. Skipunin notar SSH-tenginguna, sömu auðkenningu og skipunin ssh, og svipaða framsetningu og cp, þ.e.

scp FRUMRIT ÁFANGASTAÐUR

Til að senda skrá af eigin tölvu í playground/ er hægt að keyra

scp prufa.txt skoli[auðkenni]@skel.ggc.tf:~/examples/playground/

Notandanafn og hýsill eru framsett eins og með ssh, þ.e. með @ merki á milli. Á eftir þeim fylgir tvípunktur með slóðinni á hinni tölvunni.

skoli[auðkenni]@skel.ggc.tf:~/examples/playground/
└─────┬───────┘ └──────┬─────┘ └──────────┬─────────┘
 Notandanafn        Hýsill             Fjarslóð

Fjarslóðir

Sjálfgefin slóð scp er heimamappa þess notanda sem tengist þjóninum yfir SSH. Til að afrita skjal beint í heimamöppuna er þannig hægt að keyra

scp prufa.txt skoli[auðkenni]@skel.ggc.tf:
Þetta þýðir einnig að ~ í dæminu hér að ofan er í raun óþarfi og hægt væri að keyra
scp prufa.txt skoli[auðkenni]@skel.ggc.tf:examples/playground
í staðinn, en það er samt góð venja að nota ~.

Við getum líka sótt skrá af þjóninum yfir á eigin tölvu, t.d. með

scp skoli[auðkenni]@skel.ggc.tf:~/examples/welcome.txt .

sem afritar welcome.txt í vinnumöppuna. Eins og með cp, ef valinn áfangastaður er mappa þá er skráin af þjóninum afrituð þangað með sama nafni. Ef áfangastaðurinn er skrá, er skráin af þjóninum afrituð í skrá með það nafn, þ.e.

scp skoli[auðkenni]@skel.ggc.tf:~/examples/welcome.txt welcome-fra-thjoni.txt

SSH config

Ef við höfum búið til Host skoli í ~/.ssh/config, eins og sýnt er í SSH-kynningunni, má stytta skipanirnar í, t.d.

scp prufa.txt skoli:
scp prufa.txt skoli:~/examples/playground/
scp skoli:~/examples/welcome.txt ./welcome-fra-thjoni.txt

Á sama hátt og cp getur scp afritað möppur með stillingunni -r, þannig afritar

scp -r verkefni/ skoli[auðkenni]@skel.ggc.tf:~/examples/playground/
möppuna verkefni af okkar tölvu yfir í möppuna ~/examples/playground á þjóninum.

Athugaðu áfangastaðinn

Eins og með cp mun scp yfirskrifa skrá með sama heiti án þess að spyrja. Skoðaðu bæði uppruna og áfangastað áður en þú ýtir á Enter, sérstaklega þegar þú notar algilda slóð eða sama skráarheiti á báðum tölvum.

Prófaðu scp

Keyrðu skipun á eigin tölvu sem sækir ~/examples/welcome.txt af fylgiþjóninum og vistar hana sem welcome-fra-thjoni.txt í núverandi möppu.

Lausn

Með fullu hýsilheiti:

scp skoli[auðkenni]@skel.ggc.tf:~/examples/welcome.txt ./welcome-fra-thjoni.txt

Ef Host skoli er skilgreint í ~/.ssh/config:

scp skoli:~/examples/welcome.txt ./welcome-fra-thjoni.txt

Síðan staðfestum við á eigin tölvu:

file welcome-fra-thjoni.txt
cat welcome-fra-thjoni.txt

Skilvirkari afritun

Skipunin scp er einföld og þægileg í notkun, en hefur þann ókost að vera óskilvirk á ýmsa vegu. Aftur á móti er skipunin rsync hönnuð til að samstilla skrár og möppur á milli tveggja staða og býr yfir ýmsum brellum til að hraða gagnaflutningum. Við fyrstu keyrslu er allt innihaldið sent á milli staða, en við síðari keyrslur ber það saman uppruna og áfangastað og sendir aðeins það sem hefur breyst. Það er því mun hraðvirkara og skilvirkara fyrir endurtekinn flutning og hentar vel þegar við flytjum sömu verkefnismöppu aftur og aftur.

Einnig býður rsync upp á að þjappa gögnum sem send eru á milli til að minnka stærð gagnanna sem þarf að senda á milli og getur því verð skilvirkara, jafnvel þegar gögn eru flutt í fyrsta skiptið.

Dæmi um að samstilla verkefnismöppu af eigin tölvu, með þjöppun, er

rsync -azvP verkefni/ skoli:~/examples/playground/verkefni/

Skástrik skipta máli

Þegar möppur eru afritaðar með rsync, og áfangastaðurinn er nú þegar til, skiptir máli hvort frumritið endi á skástriki eða ekki. Ef það endar á skástriki, þ.e.

rsync -azvP verkefni/ skoli:~/examples/playground/mitt-verkefni/
þýðir það, í þessu tilfelli, að allt innihald möppunnar verkefni er afritað inn í mitt-verkefni. Aftur á móti ef skástrikinu er sleppt,
rsync -azvP verkefni skoli:~/examples/playground/mitt-verkefni/
þýðir það að mappan verkefni og allt innihald hennar verður afritað inn í möppuna mitt-verkefni, þannig verður endanleg slóð hennar ~/examples/playground/mitt-verkefni/verkefni


Þessi kafli gefur aðeins örstutta kynningu á skipunum til að sækja gögn með HTTP og hvernig á að flytja gögn yfir SSH. Kaflinn um netkerfi kafar svo dýpra í hvernig tölvur tala saman á bak við tjölding og kynnir til sögu fleiri gagnlegar skipanir eins og ping, dig og nc.

Til að fá smjörþefinn af því að nota skipanir sem eiga samskipti yfir net mælum við með því að spreyta sig á verkefnunum í networking-from-the-shell verkefnasafninu á fylgiþjóninum.

Verkefni

Hér má finna öll verkefnin úr efni þessa kafla.

Opna verkefni