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
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
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/
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
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
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
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
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:
~ í 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
~.
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/
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/
verkefni er afritað inn í mitt-verkefni. Aftur á móti ef skástrikinu er sleppt,
rsync -azvP verkefni skoli:~/examples/playground/mitt-verkefni/
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-shellverkefnasafninu á fylgiþjóninum.
Verkefni