Siirry sisältöön

LED työpöytälamppu

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

img_20140317_103602 img_20140317_103717 img_20140317_104716 img_20140317_104817

Videot

Protovideo 1

Protovideo 2

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

http://www.arduino.cc/

Tietoa

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Web-palvelimen suorituskyky ja käänteisproxy

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:

sk1

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.

sk2

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ä.

sk3

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.

sk4

Tallennus ja sitten muokataan vielä Apachen porttiasetuksia.

$ cd /etc/apache2/

$ sudoedit ports.conf

”Listen 80” kohtaan muutetaan kuunneltavaksi portiksi ”8080”.

sk5

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.

sk6

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

Arduino Serial monitor

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);
}

pituusserial

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);
}

ledonfoff

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

WordPressin asennus

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:

wordpress1

Klikkasin ”Create a Configuration File”, josta puolestaan aukesi tämän näköinen ikkuna:

wordpress2

Klikkasin ”Let’s go!”. Täytin seuraavalle sivulle tiedot, jotka näyttivät tältä:

wordpress3

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”.

wordpress4

Seuraavaksi aukesi seuraavanlainen ikkuna, johon täytin tiedot ja klikkasin sen jälkeen ”Install WordPress”.

wordpress5

Tuli ilmoitus kuinka asennus on onnistunut. Klikkasin ”Log In”. Sitten vain kirjauduin sisään ja pääsin WordPress Dashboardiin.

wordpress6

wordpress7

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”.

wordpress8

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.

wordpress9

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ä.

wordpress10

Kuvien lisääminen

Lopuksi halusin vielä testata kuvien lisäämistä artikkeliin. Kun yritän lisätä kuvaa uuteen artikkeliin, niin saan seuraavanlaisen ilmoituksen.

wordpress11

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.

wordpress12

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

Arduino projekti

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

Nimipohjainen virtuaalipalvelin

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ä:

hosts

Viimeisenä kokeilin vain, että homma toimii. Menin siis selaimella osoitteeseen sippola.com, ja kuten kuvasta huomataan, niin homma toimi.

sip_testi

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

Arduino Auto Draw

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 &lt;= 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 &gt;= 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:

2014-02-20 15.37.03-4

Teippasimme servoon kynän, jonka avulla yritimme saada aikaan jonkinlaisen piirtolaitteen.

IMG_20140220_155258

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

Metapaketit ja pakettivarastot

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

lsb_release

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

new_rep

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

HoneyNet Scan of the Month 15

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”.

ls_last

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.

install

”Cleaner” -tiedosto puolestaan vaikutti siltä, että se poistaa tai ”siivoaa” jälkiä järjestelmästä.

cleaner

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

Arduino Ultraäänisensori

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.

tuomasping

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ä.

IMG_20140204_121122

IMG_20140204_121154

Kuva kytkennästä:

IMG_20140204_121214

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