SHARE
TWEET

Untitled

a guest Dec 6th, 2016 109 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Ännu en ny och spännande kurs
  2.  
  3. här kommer vi att skripta, först på linux, med BASH och senare med Power Shell (& C:o).
  4.  
  5. Allt ni redan kan göra på kommandoraden i linux, kan ni även lägga i en textfil som ni gör körbar och som ni då kan använda som skript.
  6.  
  7. För att få lite mer ordning på det hela behöver ni naturligtvis behärska både slingor, funktioner och villkor.
  8.  
  9. Kursen består av en rad praktiska uppgifter som påminner om de problem ni kommer att få lösa som systemadministratörer i verkliga livet.
  10.  
  11. Väl mött,
  12.  
  13. Roland Ronquist
  14.  
  15. 0708 73 74 70
  16.  
  17. roland.ronquist@gmail.com
  18.  
  19. Litteratur
  20.  
  21. För att det här skall gå bra behöver ni kunna två saker, dels skall ni naturligtvis känna till de viktigaste linuxkommandona, för när ni skriptar använder ni precis samma kommandon som när ni kör i terminalen. Vilket naturligtvis medför att när ni programmerar så kan ni hela tiden testa varje kommando manuellt. En bra början, om ni känner er lite ovana med linux är att titta på boken från Linux Server 1. Det andra vi måste kunna är programmeringsspecifika saker som variabler, funktioner, vilkorshantering, slingor, returvärden och liknande. Även på det området skulle Gurulabs-boken kunna vara en början.
  22.  
  23. Här finns det flera bra saker på webben att läsa:
  24.  
  25. Advanced Bash-Scripting Guide på Linux Documentation Project kan vara en bra början:
  26.  
  27. http://tldp.org/LDP/abs/html/
  28.  
  29. likaså har Gentoo (som vanligt) en bra guide även för dej som vill lära dej skripta:
  30.  
  31. http://devmanual.gentoo.org/tools-reference/bash/index.html
  32.  
  33. Vill du bli skript-ninja finns ju alltid:
  34.  
  35. http://www.shell-fu.org/
  36.  
  37. Vi har även ett par herrar som är mycket aktiva och hjälpsamma på bash-kanalen på freenode (IRC), som både har en FAQ och en Wiki för bash-relaterade problem:
  38.  
  39. http://mywiki.wooledge.org/BashGuide
  40.  
  41. http://mywiki.wooledge.org/BashFAQ
  42.  
  43. Böcker
  44.  
  45. Dave Taylors "Wicked cool shell scripts" från No Starch kan vara ett alternativ, om du vill ha en riktig bok som kamrat i sängen, mörka vinterkvällar. Omfattande och fartfylld, definitivt mer läsning än vad som behövs för att klara den här kursen. Tycker du man-sidorna är jobbiga och om du vill slippa sållningen som informationssurfandet alltid innebär, då kan du skaffa "Linux in a nutshell" från O'Reilly, smidig uppslagsbok som berättar det viktigaste om nästan allting.
  46.  
  47. Somliga vill kanske bli bättre på avancerade verktyg som sed eller awk, då rekomenderar jag Dale Doughertys "sed and awk" från O'Reilly. Vill du hellre dyka ner bland balla reguljära uttryck, då har du Jeffrey friedl:s trevliga 'Mastering Regular Expressions' (O'Reilly den med) som just kommit i en ny och utökad version vilket innebär att du säkert kan hitta den gamla till reapris om du vill vara lite sniken. Personligen är jag förtjust i Mitchell Waite och Stephen Pratas "Advanced UNIX - A Programmer's Guide" som efter 30 år fortfarande är en mycket lättläst och smidig introduktion till både C-programmering och skalprogrammering. Boken används ännu idag som lärobok på många universitet runt om i världen.
  48.  
  49. IRC
  50.  
  51. Glöm inte att det finns många hjälpsamma människor på nätet och IRC är en populär (och smidig) väg att hitta dem på.
  52.  
  53. Linuxlabbarna
  54.  
  55. Ni har totalt fyra laborationer på linuxdelen av kursen som ni skall göra och lämna in.
  56.  
  57. Dessa redovisas individuellt per epost (och eventuellt genom demonstration) till:
  58.  
  59. mail:roland.ronquist@gmail.com
  60.  
  61. Laboration 1: Installera LAMP-applikation
  62.  
  63. LAMP, Linux, Apache, MySQL och PHP har blivit som ett standardrecept för hur man snabbt bygger en fungerande och avancerad webbapplikation. En av de viktigaste orsakerna till att linux faktiskt blivit så populärt i serverrummen.
  64.  
  65. https://en.wikipedia.org/wiki/LAMP_(software_bundle)
  66.  
  67. I den här laborationen skall ni välja en passande LAMP-app att installera och skriva ett skript som gör det hela någorlunda automatiskt.
  68.  
  69. Om du väljer exempelvis https://wordpress.org/,  MediaWiki, OwnCloud eller NextCloud, så brukar alla dessa vara smidiga att installera utan någon egentlig konfiguration av de bakomliggande programmen (Apache, MariaDB (MySQL) eller PHP).
  70.  
  71. Tillvägagångssätt
  72.  
  73. Först installerar in de paket som behövs för att köra applikationen ("yum install", "apt install" eller "apt-get install" beroende på vilken distribution du kör). Sedan tankar du hem koden från någon av applikationerna nedan (alltså den senaste källkoden, inte något gammalt skrammel som din distribution råkar ha i sitt repository). Packa upp filerna på rätt ställe och gör de saker som krävs för att det hela skall fungera.
  74.  
  75. Är du mer ambitiös ser du till att alltihopa fungerar helt automatiskt, men det skulle kunna räcka om användaren får svara på någon fråga också.
  76.  
  77. Det finns naturligtvis många roliga saker man kan göra om man vill ha lite bling på sitt skript;
  78.  
  79. skicka meddelanden via epost, chat (IRC, XMPP, Tox, Telegram, Facebook, Twitter, SMS,...), ni kan skriva meddelanden till syslog, det går att visa textbaserade dialogrutor via programmet dialog eller grafiska via programmet zenity (ni kan få installera dem..),
  80.  
  81. WordPress
  82.  
  83. Detta är en av de absolut populäraste bloggplattformarna, detta har gjort att det finns väldigt många färdiga plugins och teman att  tanka hem, även fast det egentligen är avsett för bloggar så gör tilläggsmodulerna att det egentligen finns få webbtjänster man inte skulle kunna tänkas sätta upp med WordPress som grund.
  84.  
  85. https://wordpress.org/
  86.  
  87. https://en.wikipedia.org/wiki/WordPress
  88.  
  89. MediaWiki
  90.  
  91. Precis som WordPress talar vi om en väldigt populär lösning här. Wiki är ett hawaiianskt ord som betyder snabb, det används om en typ av informationsstjänst där användarna själva kan uppdatera informationen; Wikipedia är den mest kända wikin och MediaWiki är Wikipedias egna wiki-program. I och med att den är byggd för Wikipedia så klarar den extrem användning, både räknat i användare och informationsmängdens storlek.
  92.  
  93. https://www.mediawiki.org/wiki/MediaWiki
  94.  
  95. https://en.wikipedia.org/wiki/MediaWiki
  96.  
  97. OwnCloud
  98.  
  99. Är en populär informationstjänst som är tänkt att hjälpa privatpersoner och företag att bli oberoende av populära molntjänster för -främst- lagring. Från början var den tänkt att ersätta tjänster som DropBox och Google Drive, men -redan utan- pluginmoduler gör den mycket mer:
  100.  
  101. kalendrar kan administreras centralt (som hos Google)
  102.  
  103. dokument likaså (Google Docs)
  104.  
  105. det finns mobilappar och roliga tillägg för musik och media, och mycket annat.
  106.  
  107. https://owncloud.org/
  108.  
  109. https://en.wikipedia.org/wiki/OwnCloud
  110.  
  111. NextCloud
  112.  
  113. I våras valde nyckelutvecklarna till OwnCloud att starta om och lämna företaget OwnCloud, som ligger bakom den applikationen. Det nya projektet heter NextCloud och gör, ännu så länge, ungefär samma saker som OwnCloud, men vi kan förvänta oss att det hela kommer att gradvis utvecklas i en ny riktning.
  114.  
  115. https://nextcloud.com/
  116. https://en.wikipedia.org/wiki/Nextcloud
  117.  
  118. Laboration 1 redovisas senast måndagen 12 december.
  119.  
  120. Skicka epost (roland.ronquist@gmail.com) med ditt skript och berätta vad det gör och vad jag behöver för att kunna provköra det (vilken dist, några speciella program och eventuella andra förutsättningar).
  121.  
  122. Laboration 2: säkerhetskopiering
  123.  
  124. Bakgrund
  125.  
  126. Detta är den absolut vanligaste skriptinguppgiften över huvud taget. Speciellt i samband med "kontors-it"; stora parallella klustersystem, som exempelvis det mesta som google håller på med, bygger på att informationen redan från början lagras på så många platser att ingen information raderas för att någon disk skulle råka dö. Många andra större informationstjänster bygger på den principen, men för oss andra så är säkerhetskopiering ett återkommande bestyr.
  127.  
  128. För den oinvigde verkar säkerhetskopiering enkelt, det är väl bara att köra tar, cpio, dump, rsync eller något av de andra fina verktygen som det vimlar av till linux, vad är problemet???
  129.  
  130. För det första har vi datamängden, dagens diskar är ganska rymliga. Skall ni ta en kopia på allt varje dag går det åt väldigt mycket lagringsutrymme och det finns framför allt två vägar att bemästra detta. För det första gör man gärna inkrementella säkerhetskopior, man kopierar bara de filer som ändrats sedan sist. För det andra har man ett schema, fullbackup i början på månaden, dessa sparas ett år; utom den som togs i januari som sparas 10 år (som är vanligt myndighetskrav för exempelvis bokföring). Varje dag tar man sedan inkrementella kopior som sparas till nästa fullbackup. Ungefär, backupschemat varierar med verksamhetens krav och naturligtvis beroende på hur mycket det får kosta.
  131.  
  132. Ett annat tekniskt problem är framför allt databaser, men även andra program som arbetar med (gärna stora) datafiler som uppdateras kontinuerligt och som sällan (eller aldrig stängs). Försöker du ta en kopia av en sådan fil är det troligt att databasen (eller vad det var för program) inte vill kännas vid filen när du återställt data från din säkerhetskopia. När det kommer till databashanterare finns det ofta verktyg, antingen för att dumpa innehållet till en datafil på ett kontrollerat sätt så att informationen kan återskapas från denna fil, eller så kanske man kan låsa filerna på disk tillfälligt. I värsta fall tvingas man stänga av databasen under den tid som säkerhetskopieringen varar. Rör det sej exempelvis om ett bokföringsprogram på ett företag som arbetar i bara en tidszon så brukar det ofta gå bra att stänga ned databasen under natten samtidit som man säkerhetskopierar. Men om vi i stället tänker oss någon form av ehandelsplattform, resebyrå eller liknande, i sådana fall brukar det krävas att allt skall vara tillgängligt dygnet runt och då måste du göra speciella saker för att det skall fungera.
  133.  
  134. Till själva uppgiften
  135.  
  136. Du skall göra en säkerhetskopia informationen som används av din LAMP-applikation som du installerade i skriptet i föregående laboration. Då vill du ha med dels alla konfigurationsfiler, databasen, samt naturligtvis php-kod och annat trevligt som du hittar i filträdet som din webbserver använder för att presentera applikationen när användarna surfar in från nätet.
  137.  
  138. Om du dumpar databasen med något roligt verktyg, det finns flera, eller om du stänger ner den under säkerhetskopieringen får du avgöra (och motivera själv). Du skulle naturligtvis även kunna skriva ett eget dump-skript i SQL om du är lite mer ambitiös och gillar databasprogrammering.
  139.  
  140. Det är bra om du presenterar lösningar för hur säkerhetskopieringen schemaläggs, både i form utav en plan (på måndagar gör vi så, på tisdagar si och vid fullmåne offrar vi en ko...) och ett schema, någon form av automatik som kör din säkerhetskopieringslösning enligt planen du beskrev nyss.
  141.  
  142. Laboration 2 redovisas senast måndagen 19 december.
  143.  
  144. Skicka epost (roland.ronquist@gmail.com) med ditt skript och berätta vad det gör och vad jag behöver för att kunna provköra det (vilken dist, några speciella program och eventuella andra förutsättningar).
  145.  
  146. Laboration 3: Återställningsskript
  147.  
  148. Bakgrund:
  149. I linuxvärlden är det ovanligt att man ens försöker återställa programfiler och liknande som kommer med pakethanteringen. Program som du själv plockat in i systemet manuellt är en helt annan sak.
  150. På systemet vi arbetar med här har du installerat LAMP-infrastrukturen från din distributions repository, Själva applikationen tankade ju ditt skript ned manuellt, dessa filer måste naturligtvis vara med i din säkerhetskopia från uppgift 2 ovan. Likaså vill du naturligtvis ha konfigurationsfiler och databas. Är du noga har du bara säkerhetskopierat de filer du själv ändrat, de som är orörda sedan installationen behöver du inte bry dej om eftersom du får motsvarande filer om du installerar igen.
  151. Uppgift:
  152. Du skall göra ett återställningsskript som dels återinstallerar de paket som behövdes för att kunna köra den applikation du installerade i första laborationen. Din LAMP-stack alltså. Sedan skall du slurpa tillbaka din säkerhetskopia så att ditt skript även återställer din applikation, med alla data, på en ny maskin (som redan har samma dist installerad som på den gamla maskinen).
  153. Laboration 3 redovisas senast fredagen 23 december.
  154.  
  155. Skicka epost (roland.ronquist@gmail.com) med ditt skript och berätta vad det gör och vad jag behöver för att kunna provköra det (vilken dist, några speciella program och eventuella andra förutsättningar).
  156.  
  157.  
  158.  
  159. Laboration 4: administration och övervakning
  160.  
  161. Bakgrund:
  162. När du kör en server finns det en rad saker du vill kunna hålla koll på. Vad som prioriteras och vad som faktiskt är viktigt kan variera ganska mycket mellan olika ställen. Har du exempelvis 10000 frontendservrar med identisk konfiguration som användarna kommer åt via någon form av lastbalansering, då spelar kanske inte diskarnas hälsa så stor roll på varje enskild maskin. Men man kan fortfarande vara intresserad av att lista ut ifall någon försöker bryta sej in i datorerna eller liknande. Driftar du system för ditt företags bokföring eller deras ehandelsplattform, då är ju prioriteten en helt annan när det kommer till diskarnas hälsa...
  163. Har du maskiner som står i en väl kyld serverhall så är kanske inte temperaturmonitoreringen lika kritisk som om du hanterar ombordservrar i en fordonsflotta där det kanske både saknas fullgod kyla och där miljön varierar mycket mer och mycket oftare.
  164. Uppgift:
  165. Någon form av övervakningsprogram; vi kommer att prata mer om det i skolan och texten här kommer att uppdateras längre fram.
  166.  
  167. Laboration 4 redovisas i januari.
  168.  
  169. Skicka epost (roland.ronquist@gmail.com) med ditt skript och berätta vad det gör och vad jag behöver för att kunna provköra det (vilken dist, några speciella program och eventuella andra förutsättningar).
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177. Hans exempel skript:
  178.  
  179. #!/bin/bash
  180.  
  181. # vi installerar lamp automagiskt
  182. # rolles exempel
  183.  
  184. # root?
  185.  
  186. # [ nedan, se 'man test'
  187. # -eq är två nummer samma?
  188. if [ 0 -eq $(id -u) ]
  189. then
  190.   # vi uppdaterar vårt system
  191.   apt update
  192.   apt upgrade -y
  193.   # vi installerar MariaDB och Apache2
  194.   apt install -y mariadb-server mariadb-client apache2 libapache2-mod-php
  195.   if [ -f phpBB-3.1.10.tar.bz2 ]
  196.   then
  197.     echo phpBB-3.1.10.tar.bz2 redan nedladdad
  198.   else
  199.     # antingen curl eller wget (wget ofta standard på din dist)
  200.     # curl -o phpBB-3.1.10.tar.bz2 https://www.phpbb.com/files/release/phpBB-3.1.10.tar.bz2
  201.     wget https://www.phpbb.com/files/release/phpBB-3.1.10.tar.bz2
  202.   fi
  203.   chown 1000 phpBB-3.1.10.tar.bz2
  204.   if [ -e /var/www/phpBB3 ]
  205.   then
  206.     echo  /var/www/phpBB3 finns redan
  207.     exit 8
  208.   else
  209.     bzip2 -dc < phpBB-3.1.10.tar.bz2 | (cd /var/www && tar xf - )
  210.     mv /var/www/html /var/www/html..orig
  211.     ln -s /var/www/phpBB3 /var/www/html
  212.   fi
  213. else
  214.   echo du måste vara root din idiot
  215.   exit 9
  216. fi
  217.  
  218. exit 0
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top