Projekti
Teimme yhteistyönä Kim Stenbergin kanssa työpöytälampun. Lampun ideana on sytyttää valoisuuden mukaan erivärisiä ledejä (punainen, keltainen ja sininen). Toisena ominaisuutena on etäisyysmittari, joka sytyttää kaikki ledit, kun joku tulee alle yhden metrin etäisyydelle lampusta. Etäisyysmittari kumoaa aina valoisuuden, eli vaikka olisi valoisaa ja lamput pois päältä sekä henkilö alle metrin päässä niin kaikki lamput syttyvät.
Tarvikkeet
– Arduino Uno
– Ultrasonic Sensor HY-SRF05
– LDR Sensor
– Ultrakirkas LED 5mm x3 (sininen, punainen, keltainen)
– Vastus x1
– Hyppylankoja x12
– Koekytkentälevy
– USB-kaapeli
Koodi
#define trigPin 3 #define echoPin 2 int ldr = A0; int ldrArvo = 0; int red = 9; int yellow = 10; int blue = 11; void setup() { Serial.begin(9600); pinMode(red, OUTPUT); pinMode(yellow, OUTPUT); pinMode(blue, OUTPUT); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); digitalWrite(red, LOW); digitalWrite(yellow, LOW); digitalWrite(blue, LOW); } void loop() { long duration; long distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration / 2) / 29.1; ldrArvo = analogRead(ldr); Serial.println(analogRead(ldrArvo)); delay(100); if (distance > 50) { if (ldrArvo < 150) { digitalWrite(11, HIGH); // set the blue LED ON digitalWrite(9, LOW); digitalWrite(10, LOW); } else if (ldrArvo > 150 && ldrArvo < 300) { digitalWrite(10, HIGH); // set the yellow LED ON digitalWrite(9, LOW); digitalWrite(11, LOW); } else if (ldrArvo > 300 && ldrArvo < 400) { digitalWrite(9, HIGH); // set the red LED ON digitalWrite(10, LOW); digitalWrite(11, LOW); } else if (ldrArvo > 400) { digitalWrite(9, LOW); // all LEDs off digitalWrite(10, LOW); digitalWrite(11, LOW); } } else { // set all LEDS ON digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); } delay(100); }
Kuvat
Videot
Testi-laitteisto
HP 2570p kannettava tietokone
Kingston DataTraveler 3.0 32GB
Lähteet
Projektit ja tehtävät tehdään Tero Karvisen Prototyypin rakentaminen -kurssille:
http://terokarvinen.com/2013/aikataulu-%E2%80%93-prototyypin-rakentaminen-bus4tn007-5-alkukevat-2014
Tietoa
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html
Tämän kertaisena Linux palvelimena -kurssin tehtävänä oli web-palvelimen kuormittaminen ja käänteisproxyn testaus. Tehtävän tein HP EliteBook 2570p kannettavalla tietokoneellani ja Xubuntun 12.04 LTS 32-bit usb-tikulla.
Tämä artikkelin tehtävät alkavat tilanteesta, jossa on asennettuna LAMP sekä WordPress. Ohjeet niiden asentamiseen löydät aikaisemmista artikkeleistani.
Web-palvelimen suorituskyky
Suorituskyvyn testaukseen käytin Apachen omaa benchmark -työkalua. Aloitin komennolla:
$ ab -c 200 -n 300 http://localhost/~xubuntu/wordpress/ | grep -P ’Failed|#/sec|50%|100%|Length’
Komennossa ”-c” tarkoittaa asiakkaiden määrää ja ”-n” pyyntöjen lähetysmäärää. Tulos on seuraava:
Komento antaa vastauksen, jossa kerrotaan muun muassa dokumentin koko, epäonnistuineiden pyyntöjen määrä ja pyyntöjen määrä/sekuntia.
Seuraavaksi ajattelin kokeilla samaa testiä yhteen blogini artikkeleista. Se tapahtui komennolla:
$ ab -c 200 -n 300 http://localhost/~xubuntu/wordpress/?p=4 | grep -P ’Failed|#/sec|50%|100%|Length’
Tulos näytti hyvin samankaltaiselta, kuin ensimmäiselläkin kerralla.
Tämän jälkeen tehtävänä oli testata samanlaista sivua staattisena. Loin aluksi uuden kansion public_html -kansioon, jonka nimeksi tuli ”stattesti”. Kyseiseen kansioon tein sitten ”index.html” tiedoston, johon kopioin WordPress etusivuni lähdekoodin.
$ mkdir stattesti
$ cd stattesti/
$ nano index.html
Sitten vain ajoin samantyyppisen kuormituskomennon kuin aikaisemminkin, mutta koskien tekemääni staattista websivua.
$ ab -c 200 -n 300 http://localhost/~xubuntu/stattesti/index.html | grep -P ’Failed|#/sec|50%|100%|Length’
Sama sivu toimi hieman nopeammin staattisena, kuten kuvasta voidaan nähdä.
Käänteisproxy (Varnish)
Seuraavaksi oli tarkoitus kokeilla käänteisproxyn toimintaa. Varnish on yksi näistä ja sen sai asennettua komennolla:
$ sudo apt-get install varnish
Asennuksen jälkeen Varnish pitää saada kuuntelemaan porttia 80, joten joudumme muokkaamaan hieman asetuksia:
$ cd /etc/default/
$ sudoedit varnish
Kyseisestä tiedostosta muokkaamme aihetta ”Alternative 2” ja kohtaa ”DAEMON-OPTS..”. Vaihdamme porttinumeron ”6081” numeroon ”80”, kuvan osoittamalla tavalla.
Tallennus ja sitten muokataan vielä Apachen porttiasetuksia.
$ cd /etc/apache2/
$ sudoedit ports.conf
”Listen 80” kohtaan muutetaan kuunneltavaksi portiksi ”8080”.
Tallentamisen jälkeen käynnistetään Apache sekä Varnish uudelleen.
$ sudo service apache2 restart
$ sudo service varnish restart
Seuraavaksi olisi tarkoitus vertailla tuloksia ennen ja jälkeen käänteisproxyn asentamisen, joten ajoin nyt uudelleen kuormituskomentoja.
$ ab -c 200 -n 300 http://localhost/~xubuntu/wordpress/ | grep -P ’Failed|#/sec|50%|100%|Length’
$ ab -c 200 -n 300 http://localhost/~xubuntu/wordpress/?p=4 | grep -P ’Failed|#/sec|50%|100%|Length’
Tuloksista näemme, että pyynnöt tapahtuvat nyt nopeammin. Voimme siis päätellä tästä, että palvelimen suorituskyky on parempi käänteisproxyn avulla.
Lähteet
http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-11-ja-12-kevaalla-2014
http://terwayne.wordpress.com/linux-palvelimena/
Tietoa
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html
Tällä kertaa tehtävänä oli testata Arduinon serial monitoria, kirjoittamalla siihen arvoja sekä lukemalla niitä.
Harjoituksen tekemiseen käytin HP EliteBook 2570p kannettavaa tietokonettani ja Xubuntu 12.04 LTS 32-bit usb-tikkua, johon olin asentanut Arduido-IDEn.
Ultraäänisensorin arvojen lukeminen
Tein yksinkertaisen etäisyysmittarin ultraäänisensorin avulla. Arvot tulostuvat Arduino IDEn Serial Monitoriin.
/* Koodi: http://www.instructables.com/id/Simple-Arduino-and-HC-SR04-Example/step3/Upload-the-sketch/ */ #define trigPin 3 #define echoPin 2 void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { long duration, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; if (distance >= 200 || distance <= 0) { Serial.println("Out of range"); } else { Serial.print(distance); Serial.println(" cm"); } delay(500); }
Tiedon syöttäminen
Tähän toiseen tehtävään tein projektin, jossa voidaan valita onko LED päällä vai poissa päältä. Ohjelma toimii siis nyt niin, että kun syöttää Serial Monitoriin ’y’ = yes, niin LED menee päälle ja ’n’ = no, niin LED menee pois päältä.
char virta = ' '; int ledPin = 13; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); Serial.println("To turn LED ON press 'y', to turn OFF press 'n'."); } void loop() { if (Serial.available()) { virta = Serial.read(); Serial.print("LED (ON = y/OFF = n): "); Serial.println(virta); } if (virta == 'y') { digitalWrite(ledPin, HIGH); } if (virta == 'n') { digitalWrite(ledPin, LOW); } delay(500); }
Lähteet
Projektit ja tehtävät tehdään Tero Karvisen Prototyypin rakentaminen -kurssille:
http://terokarvinen.com/2013/aikataulu-%E2%80%93-prototyypin-rakentaminen-bus4tn007-5-alkukevat-2014
http://arduino.cc/en/reference/serial
Tietoa
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html
Tämän kertaisena Linux palvelimena -kurssin tehtävänä oli asentaa WordPress ja testata sitä. Tehtävän tein HP EliteBook 2570p kannettavalla tietokoneellani ja Xubuntun 12.04 LTS 32-bit usb-tikulla.
Tietokannan luominen
Olin aikaisemmin asentanut jo LAMPin, joten MySQL oli myös asennettuna. Sitten vain kirjauduin sisään MySQL-serveriin komentokehotteen avulla.
$ mysql -u root -p
Tein uuden tietokannan ja annoin sille oikeudet komennoilla:
CREATE DATABASE tuomaswp; GRANT ALL PRIVILEGES ON tuomaswp.* TO tuomaswp@localhost IDENTIFIED BY "salasana"; FLUSH PRIVILEGES;
Näin saimme tietokannan luotua. Lopuksi komennolla ”exit” pääsee pois MySQL -serveristä.
WordPress
Aivan ensimmäisenä tehtävänä WordPressin asennuksessa oli itse asennuspaketin lataaminen.
$ cd public_html/sippola.com/
$ wget https://wordpress.org/latest.tar.gz
Tämän jälkeen purin paketin ja siirsin paketista tulleet tiedostot sippola.com kansioon, jotta saan wordpress sivun toimimaan kyseiseen osoitteeseen.
$ tar -xf latest.tar.gz
$ mv wordpress/* ../sippola.com/
Seuraavaksi menin selaimella osoitteeseen ”www.sippola.com”, josta olin aikaisemmin tehnyt testimielessä itselleni virtuaalinimen. Avautui seuraavanlainen ikkuna:
Klikkasin ”Create a Configuration File”, josta puolestaan aukesi tämän näköinen ikkuna:
Klikkasin ”Let’s go!”. Täytin seuraavalle sivulle tiedot, jotka näyttivät tältä:
Tämän jälkeen WordPress ilmoittaa, että se ei pysty tekemään ”wp-config.php” -tiedostoa, joten se pitää tehdä itse. Kopioin laatikossa olevan tekstin ja liitin sen kyseisen nimiseen tiedostoon, jonka tein ”sippola.com” -hakemistoon. Kun olin tämän tehnyt, niin klikkasin ”Run the install”.
Seuraavaksi aukesi seuraavanlainen ikkuna, johon täytin tiedot ja klikkasin sen jälkeen ”Install WordPress”.
Tuli ilmoitus kuinka asennus on onnistunut. Klikkasin ”Log In”. Sitten vain kirjauduin sisään ja pääsin WordPress Dashboardiin.
Asennuksen jälkeen oli tehtävänä tehdä jotain sisältöä sivuille. Menin Dashboardin sivuvalikon kautta ”Posts” ja sieltä ”Add new”. Kirjoitin otsikon ja lauseen tekstiä ja sitten vain klikkasin ”Publish”.
Permalinks
Seuraavaksi halusin muuttaa linkit järkevään muotoon, joten valitsin ”Settings” -> ”Permalinks”. Sieltä valitsin vaihtoehdon ”Day and name”. Tämä ei kuitenkaan riittänyt vaan vielä piti tehdä ”.htaccess” -tiedosto samaan kansioon muiden WordPress tiedostojen kanssa.
$ nano .htaccess
Tiedostoon laitoin seuraavanlaisen tekstin:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Sitten annoin komennot:
$ sudo a2enmod rewrite
$ sudo service apache2 restart
Nyt linkit näyttävät paljon paremmilta ja toimivat hyvin.
Teemat
WordPressin teeman kävin vaihtamassa ”Appearance” -> ”Themes” -valikosta. Vaihtoehtoja ei kovin paljoa ole, mutta valitsin ”Twenty Twelve” -teeman. Muutin hieman teeman väritystä, jonka jälkeen sivu näytti tältä.
Kuvien lisääminen
Lopuksi halusin vielä testata kuvien lisäämistä artikkeliin. Kun yritän lisätä kuvaa uuteen artikkeliin, niin saan seuraavanlaisen ilmoituksen.
Minulla ei siis ole tarvittavia oikeuksia kyseiseen kansioon. Saan muutettua oikeudet seuraavasti:
$ cd wp-content/
$ mkdir uploads
$ chmod 777 uploads/
Tämän jälkeen kun yritin kuvan lisäämistä, niin se onnistui.
Lähteet
http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-11-ja-12-kevaalla-2014
http://codex.wordpress.org/Changing_File_Permissions
http://codex.wordpress.org/Using_Permalinks
Tietoa
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html
Tehtävänä oli suunnitella Prototyypin rakentaminen -kurssille projekti-idea. Päädyimme Kim Stenbergin kanssa tekemään projektin yhdessä ja aiheeksi valitsimme jonkinlaisen liiketunnisteisen lampun.
Työpöytälamppu
Kyseinen lamppu/valaisin voisi soveltua esim. työpöydälle. Ajattelimme, että tunnistimen voisi kiinnittää servoon, jotta sen tunnistusaluetta saisi hieman laajemmaksi. Lisäksi siihen voisi lisätä on/off toiminnon napin ja ledien avulla.
Tarvikkeet:
– Arduino Uno
– Ultraäänisensori
– Servo
– Lamppu
– Nappi
– Hyppylankoja
– Koekytkentälevy
– Ledejä
Lähteet
Projektit ja tehtävät tehdään Tero Karvisen Prototyypin rakentaminen -kurssille:
http://terokarvinen.com/2013/aikataulu-%E2%80%93-prototyypin-rakentaminen-bus4tn007-5-alkukevat-2014
Tietoa
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html
Tämän kertaisena Linux palvelimena -kurssin tehtävänä oli tehdä virtuaalipalvelin Apachelle. Tehtävät tein HP EliteBook 2570p kannettavalla tietokoneellani ja Xubuntun 12.04 LTS 32-bit usb-tikulla.
Virtuaalipalvelin
Ennen tämän tehtävän aloittamista olin asentanut jo tarvittavat paketit (LAMP) ja asettanut käyttäjien kotisivuhakemistot sallituiksi. Aloitin uuden tehtävän tekemällä aiemmin luomaani public_html -kansioon uuden kansion, nimeltään sippola.com:
$ cd public_html
$ mkdir sippola.com
Tähän kansioon tein vielä tiedoston index.html, johon kirjoitin testin vuoksi vain ”Testisivu!”:
$ nano index.html
Tämän tehtyäni menin muokkaamaan Apachen asetustiedostoa. Siirryin aluksi polulle:
$ cd /etc/apache2/sites-available
Tähän hakemistoon tein uuden tiedoston komennolla:
$ sudoedit sippola.com
Tiedostoon kirjoitin seuraavanlaisen tekstin:
<VirtualHost *:80> ServerName www.sippola.com ServerAlias sippola.com DocumentRoot /home/xubuntu/public_html/sippola.com </VirtualHost>
Tämän jälkeen tallensin tiedoston ja otin kyseisen sivun käyttöön komennoilla:
$ sudo a2ensite sippola.com
$ sudo service apache2 reload
Seuraavaksi piti vielä muokata hosts -tiedostoa, joka löytyy järjestelmän asetuksista kansiosta /etc:
$ cd /etc
$ sudoedit hosts
Tiedostoon piti laittaa koneen ip-osoite ja siihen viittaava sivu, jotka olivat tässä testi-tapauksessa sisäverkon ip-osoite ja haluamani nimi. Tallensin lopuksi tiedoston, joka näytti tältä:
Viimeisenä kokeilin vain, että homma toimii. Menin siis selaimella osoitteeseen sippola.com, ja kuten kuvasta huomataan, niin homma toimi.
Lähteet
http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-11-ja-12-kevaalla-2014
http://vihonenl.wordpress.com/linux-palvelimena/
Tietoa
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html
Tällä kerralla sain kokeiltavaksi Servon, jonka avulla piti tehdä jonkinlainen miniprojekti. Teimme Kim Stenberin ja Janne Variksen kanssa yksinkertaisen piirtolaitteen Servon ja napin avulla.
Harjoituksen tekemiseen käytin HP EliteBook 2570p kannettavaa tietokonettani ja Xubuntu 12.04 LTS 32-bit usb-tikkua, johon olin asentanut Arduido-IDEn.
Tarvikkeet:
– Arduino Uno
– Servo
– Nappi
– Hyppylankoja
– Koekytkentälevy
Piirturi
// Alkuperäinen koodi: http://electronics.divinechildhighschool.org/Home/Arduino-Lessons/servo-how-to int servoPin = 8; int angle; int pulseWidth; int button = 9; int val = 0; void setup () { pinMode(servoPin, OUTPUT); pinMode(button, INPUT); Serial.begin (9600); } void servoPulse(int servoPin, int angle) { pulseWidth = (angle * 10) + 600; digitalWrite(servoPin, HIGH); delayMicroseconds(pulseWidth); digitalWrite(servoPin, LOW); } void loop() { val = digitalRead (button); //sets the value to the state of the button if (val==HIGH) { //if the push button is pressed proceed with the for loop for (angle = 90; angle <= 180; angle++) { val = digitalRead (button); //Reads the button between every angle change if (val==LOW) { //if the button is released, the angle goes back to 90 angle = 90; } servoPulse (servoPin, angle); delay (20); } for (angle = 180; angle >= 90; angle--) { //If the button is not released, the loop returns to 90 and continues servoPulse (servoPin, angle); delay (20); } } }
Kytkennässä käytimme apuna kytkentälevyä. Kuva kytkennästä näyttää seuraavalta:
Teippasimme servoon kynän, jonka avulla yritimme saada aikaan jonkinlaisen piirtolaitteen.
Lähteet
Projektit ja tehtävät tehdään Tero Karvisen Prototyypin rakentaminen -kurssille:
http://terokarvinen.com/2013/aikataulu-%E2%80%93-prototyypin-rakentaminen-bus4tn007-5-alkukevat-2014
http://electronics.divinechildhighschool.org/Home/Arduino-Lessons/servo-how-to
Tietoa
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html
Tällä kerralla tehtävänä oli tehdä metapaketti sekä pakettivarasto. Tehtävät tein HP EliteBook 2570p kannettavalla tietokoneellani ja Xubuntun 12.04 LTS 32-bit live-cd:llä.
Metapaketti
Aloitin metapaketin luomisen päivittämällä pakettivarastot sekä asentamalla equivs -paketin.
$ sudo apt-get update
$ sudo apt-get install equivs
Seuraavaksi tein uuden kansion:
$ mkdir meta
$ cd meta/
Kyseiseen kansioon tein uuden tiedoston komennolla:
$ equivs-control tuomas-meta.cfg
Aloitin sen muokkaamisen nanolla:
$ nano tuomas-meta.cgf
Tiedostosta tulee muokata paketin nimi, versio, ylläpitäjä, asennettavat ohjelmat ja kuvaus. Muutin tiedostoon seuraavat tiedot:
Package: tuomas-meta Version: 0.1 Maintainer: Tuomas Sippola <tuomas.sippola@example.com> Depends: apache2, htop, geoip-bin Description: Tuomaksen metapaketti long description and info . second paragraph
Tallensin tiedoston ctrl+x -yhdistelmällä. Tämän jälkeen vuorossa oli tiedoston paketointi.
$ equivs-build tuomas-meta.cfg
Näin uusi paketti on valmiina. Paketoinnista syntyi uusi tiedosto, nimeltään ”tuomas-meta_0.1_all.deb”. Seuraavaksi asensin gdebin, jotta päästään kokeilemaan paketin asennusta.
$ sudo apt-get install gdebi
$ sudo gdebi -n tuomas-meta_0.1_all.deb
Pakentin asennus onnistui hyvin. Menin selaimella localhost -osoitteeseen ja totesin, että ainakin apache2:n asennus onnistui hyvin. Kokeilin vielä, että luotu paketti menee läpi Lintian nimisestä tarkistus-ohjelmasta.
$ sudo apt-get install lintian
$ lintian tuomas-meta_0.1_all.deb
Komennon jälkeen ei tullut virheilmoitusta, joten paketti meni läpi ilman virheitä.
Pakettivaraston luonti
Pakettivaraston luontiin tarvitsee web-palvelimen (apache), jonka asensin jo aiemmin luomallani metapaketilla. Nyt täytyy vain asettaa käyttäjien kotisivuhakemistot sallituiksi. Sehän tapahtui komennoilla:
$ sudo a2enmod userdir
$ sudo service apache2 restart
Seuraavaksi tein kotihakemistoon uuden hakemiston ja sinne vielä muutaman lisähakemiston.
$ mkdir public_html
$ cd public_html/
$ mkdir -p repository/conf
Kyseiseen conf-kansioon tein uuden tiedoston:
$ nano repository/conf/distributions
Tiedostoon kirjoitetaan seuraavat tiedot:
Codename: precise Components: main Suite: precise Architectures: i386 amd64 source
Järjestelmän koodinimen saa selville komennolla:
$ lsb_release -a
Seuraavana oli vuorossa reprepro -ohjelman asennus.
$ sudo apt-get install reprepro
Asennuksen jälkeen viedään uusin version metapaketista palvelimelle komennolla:
$ reprepro -VVVV -b public_html/repository/ includedeb precise meta/tuomas-meta_0.5_all.deb
Tämän jälkeen muokataan repository.list -tiedostoa seuraavasti:
$ sudoedit /etc/apt/sources.list.d/repository.list
Kirjoitetaan tiedostoon yksi rivi tekstiä:
deb http://127.0.0.1/~xubuntu/repository precise main
Tiedoston tallentamisen jälkeen oli vuorossa pakettivarastojen päivittäminen ja paketin lataaminen ja asennus.
$ sudo apt-get update
$ sudo apt-get install tuomas-meta
Komento ei tällä kertaa asentanut mitään, koska olin jo asentanut kyseisen paketin ohjelmat, mutta ainakin se näytti toimivan. Päätin kuitenkin vielä päivittää metapakettia, lisäsin sinne vlc-asennuspaketin ja muutin versionumeron uudempaan. Versioksi tuli tässä vaiheessa jo 0.7. Sen jälkeen ajoin taas seuraavat komennot:
$ equivs-build tuomas-meta.cfg
$ reprepro -VVVV -b public_html/repository/ includedeb precise meta/tuomas-meta_0.7_all.deb
Näin uusi version on siirretty repositoryyn ja vanha poistunut. Sitten vaan komennot:
$ sudo apt-get update
$ sudo apt-get install tuomas-meta
Homma toimi hyvin ja vlc asentui myös onnistuneesti.
Scriptin paketointi
Viimeisenä vaiheena oli vielä paketoida scripti niin, että se on kaikkien käyttäjien käytettävissä. Aloitin tekemällä uuden tiedoston aiemmin tekemääni ”meta” -kansioon:
$ cd meta/
$ nano tiedot
Tiedostoon kirjoitin scriptin, jolla saan näkyviin vapaan levytilan sekä joitain verkko-tietoja.
#!/bin/bash df -h ifconfig
Tallennettuani tiedoston, lisäsin sille suoritusoikeudet komennolla:
$ chmod 700
$ ./tiedot
Scripti toimi hyvin ja tulosti halutut tiedot. Seuraavaksi scripti piti laittaa osaksi paketti, jonka jo aiemmin loin.
$ nano tuomas-meta.cgf
Muokkasin paketin versionumeron uudempaan (0.8) ja lisäsin ”Files”-rivin.
Files: tiedot /usr/local/bin/
Rivillä ensimmäisenä on scriptin nimi ja sen jälkeen polku, johon se asennetaan. Viimeiseksi paketoin uuden version ja kokeilin toimiiko scripti.
$ equivs-build tuomas-meta.cfg
$ sudo gdebi -n tuomas-meta_0.8_all.deb
$ tiedot
Asennus sekä testaus onnistui hyvin ja scripti toimi. Lopuksi tein vielä uuden käyttäjän ja testasin toimivuuden myös sillä. Nyt järjestelmän käyttäjillä on sama komento käytössään.
Lähteet
http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-11-ja-12-kevaalla-2014
http://terokarvinen.com/2011/create-deb-metapackage-in-5-minutes
http://terokarvinen.com/2011/update-all-your-computers-with-a-deb-repository
Tietoa
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html
Tehtävänä oli ratkaista HoneyNetin Scan of the Month 15 -haaste. Se löytyy osoitteesta: http://old.honeynet.org/scans/scan15/.
Tehtävän tein HP EliteBook 2570p kannettavalla tietokoneellani ja Xubuntun 12.04 LTS 32-bit live-cd:llä.
Levykuvan lataaminen ja tiedostojen palauttaminen
Aloitin homman tekemällä uuden hakemiston ja lataamalla sinne honeynet -levykuvan:
$ sudo apt-get update
$ mkdir scan
$ cd scan
$ wget http://old.honeynet.org/scans/scan15/honeynet.tar.gz
Seuraavaksi purin ladatun tar.gz -tiedoston komennolla:
$ tar -xf honeynet.tar.gz
Purkamisen jälkeen ilmestyi uusi ”honeynet” -hakemisto.
Tässä vaiheessa en oikein tiennyt mitä tehdä, joten jatkoin Tero Karvisen kirjoittaman blogin ohjeiden mukaisesti, jossa käsiteltiin tiedostojen palauttamista. Aluksi tein kaksi uutta kansiota ”honeynet” hakemistoon:
$ mkdir allocated deleted
Palautustyökalujen käyttö-ohjeita katsoin taas Teron blogista. Tarkoituksena oli kuitenkin ”tuoda” tiedostoja ”honeypot.hda8.dd” -nimisestä tiedostosta. Suoritin seuraavat komennot:
$ tsk_recover -a honeypot.hda8.dd allocated/
$ tsk_recover honeypot.hda8.dd deleted/
Tuli ilmoitus, että tarvitaan ”sleuthkit” niminen paketti. Asensin sen, jotta pystyin jatkamaan tiedostojen palauttamista.
$ sudo apt-get install sleuthkit
Tämän jälkeen ajoin aikaisemmat ”recover” -komennot uudelleen, tällä kertaa onnistuneesti.
Ensimmäisestä komennosta tuli ilmoitus:
”Files Recovered: 1614”
Ja toisesta tuli:
”Files Recovered: 37”
Aikajana
Palautusten jälkeen päätin tehdä aikajanan, koskien järjestelmän tapahtumia. Aikajana ja sen tutkiminen tapahtuu komennoilla:
$ tsk_gettimes honeypot.hda8.dd > rawtimes
$ mactime -b rawtimes | less
Tarkastelen aikajanaa päivämäätältä 15. Maaliskuuta 2001 ja sen lähiympäristöstä. Sieltä löytyy epäilyttäviä ”(deleted)” -merkintöjä tiedostojen lopusta. Ajattelin, että aiemmin luomallani ”deleted” -kansiolla ja sinne tiedostojen palautuksella voisi olla jokin yhteys näihin ”(deleted)” merkittyihin tiedostoihin.
Rootkitin etsimistä
Seuraavaksi päätinkin siirtyä tutkimaan palautettuja tiedostoja ”deleted” ja ”allocated” -kansioista. ”Deleted” -kansiosta löydän ”etc” ja ”$OrphanFiles” -hakemistot ja ”lk.tgz” nimisen tiedoston. Päätän tarkastella ensin kahta kansiota, mutta niissä en osannut löytää tai huomannut oikein mitään erikoista. Seuraavaksi ajattelin purkaa .tgz päätteisen tiedoston, jotta näen sen sisällön:
$ tar -xf lk.tgz
Purkamisen jälkeen ilmestyi ”last” -kansio. Sen sisältö vaikutti melko epäilyttävältä, sillä sieltä löytyi tiedostoja, kuten ”cleaner” ja ”logclear”.
Katselin hieman tiedostojen sisältöä lessillä. Esimerkiksi ”install” -tiedoston sisältö näytti seuraavalta. Muun muassa sana ”Rootkitului” ja muutenkin erikoinen tiedosto herätti epäilyn, että tämä voisi olla etsitty rootkit.
”Cleaner” -tiedosto puolestaan vaikutti siltä, että se poistaa tai ”siivoaa” jälkiä järjestelmästä.
SQL-injektio
SQL-injektio on tietokantapohjaisiin sovelluksiin esiintyvä hyökkäys. Siinä hyökkääjä antaa SQL-komentoja palvelimelle, jotka voivat esim. tyhjentää koko tietokannan tai muuten vahingoittaa sitä. Jos sovelluksen syöttötietojen tarkistus on toteutettu väärin tai muuten huonosti, niin tälläinen hyökkäys on mahdollinen.
Lähteet
http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-11-ja-12-kevaalla-2014
http://old.honeynet.org/scans/scan15/
http://terwayne.wordpress.com/
Tietoa
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html
Tällä kertaa sain kokeiltavaksi HC-SR04 Ultraäänisensorin. Kokeilin sensoria tekemällä etäisyysilmoittimen, jossa ledit ilmoittavat onko etäisyys kohteeseen 10cm tai yli, vai onko se alle 10cm.
Harjoituksen tekemiseen käytin HP EliteBook 2570p kannettavaa tietokonettani ja Xubuntu 12.04 LTS 32-bit usb-tikkua, johon olin asentanut Arduido-IDEn.
Tarvikkeet:
– Arduino Uno
– HC-SR04 Ultraäänisensori
– Led x2
– Hyppylanka x7
– Koekytkentälevy
Etäisyysilmoitin
/* Koodi: http://www.instructables.com/id/Simple-Arduino-and-HC-SR04-Example/step3/Upload-the-sketch/ */ #define trigPin 3 #define echoPin 2 #define led1 13 #define led2 12 void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); } void loop() { long duration, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; if (distance < 10) { // Led1 palaa, kun etäisyys on alle 10cm digitalWrite(led1,HIGH); digitalWrite(led2,LOW); } else { // Jos etäisyys on 10 tai yli, niin led2 palaa ja led1 on pois päältä digitalWrite(led1,LOW); digitalWrite(led2,HIGH); } if (distance >= 200 || distance <= 0) { Serial.println("Out of range"); } else { Serial.print(distance); Serial.println(" cm"); } delay(500); }
Arduino IDEn monitoriin tulostuu arvoja etäisyydestä. Sitä on hyvä käyttää apuna, testatessa koodin toimivuutta.
Toinen ledeistä palaa siis etäisyyden ollessa 10cm tai yli. Ja kun etäisyys menee alle 10cm, niin palava ledi vaihtuu toiseen. Käytössäni minulla oli vain keltaisia ledejä.
Kuva kytkennästä:
Lähteet
Projektit ja tehtävät tehdään Tero Karvisen Prototyypin rakentaminen -kurssille:
http://terokarvinen.com/2013/aikataulu-%E2%80%93-prototyypin-rakentaminen-bus4tn007-5-alkukevat-2014
http://www.instructables.com/id/Simple-Arduino-and-HC-SR04-Example/step3/Upload-the-sketch/
Tietoa
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html