1. Ćwiczenia Linux/Knoppix

2. Skaner sieci - Ethereal

3. Automaty skończone

4. SMTP, POP3, HTTP kontynuacja

5. Warstwa tranportowa

7. Protokoły rutingu

8. Warstwa sieci

9. Powtórzenie materiału

Wyjście

Uruchomienie / paramtery startowe dystrybucji Knoppix

Po wystartowaniu komputera z płyty CD, mamy możliwość wyboru kilku opcji:

  • knoppix - tryb graficzy

  • knoppix 2 - tryb tekstowy

  • lang - opcje językowe, np. za pomocą lang=pl wybieramy język polski

  • dekstop - wybieramy środowisko graficzne (standardowo jest to KDE), np. za pomocą desktop=fluxbox wybieramy menadżera pulpitu fluxbox

Czasami może istnieć potrzeba podania parametrów odświeżania monitora oraz rozdzielczości monitora z którą chcemy pracować:

  • vsync - odświeżanie pionowe

  • hsync - odświeżanie poziome

  • screen - rozdzielczość ekranu, np. screen=1024x768

Przykład uruchomienia:

boot: knoppix lang=pl

Zadania

  1. Uruchomić dystrybucję bez żadnych dodatkowych parametrów.

  2. Uruchomić dystrybucję w trybie tekstowym z obsługą języka polskiego.

  3. Uruchomić dystrybucję w trybie graficznym z obsługą języka polskiego i menadżerem pulpitu "FluxBox".

System Plików

ls - lista plików w katalogu bieżącym.

Przydatne parametry:

-a - wyświetla wszystkie pliki, nawet te, których nazwy zaczynają się od "."

-l - wyświetla dodatkowe informacje

cd - zmiana katalogu

. - oznacza katalog bieżący

.. - oznacza katalog nadrzędny

cd nazwa katalogu

rm - usunięcie pliku

-f - nie pytaj użytkownika o potwierdzenie wykonania operacji

-r - usuwaj pliku rekursywnie (przydatne w przypadku kasowania katalogów)

rm nazwa_pliku

rm -rf nazwa_katalogu

cp - kopiowanie plików/katalogów

-r - kopiowanie rekursywne

cp nazwa_pliku1 nazwa_pliku2 nazwa_pliku3 nazwa_katalogu

cp -r nazwa_katalogu nazwa_katalogu

mv - zmiana nazwy / przeniesienie pliku

mv stara_nazwa nowa_nazwa

Dołączanie systemu plików.

mount - zarządzanie systmem plików

Przydatne parametry:

-t typ_systemu_plików - określa typ podłączanego systemu plików

[root@localhost root]# mount
/dev/hda2 on / type ext3 (rw)
none on /proc type proc (rw)
none on /sys type sysfs (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda3 on /home type ext3 (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

Podłączamy system plików /dev/fd0 pod katalog /mnt/floppy.

[root@localhost root]# mount /dev/fd0 /mnt/floppy/
[root@localhost root]# mount
(...)
/dev/fd0 on /mnt/floppy type ext2 (rw)

Podłączamy nasz sieciowy dysk z: pod katalog /mnt/z.

Jeżeli katalog /mnt/z nie istnieje, należy go utworzyć:

[root@localhost root]# mkdir /mnt/z

Następnie wykonujemy polecenie podłączenia sieciowego systemu plików (zamiast "cogi", podajemy własną nazwę użytkownika i własny katalog):

[root@localhost root]# 
mount -t smbfs //z/cogi /mnt/z -o username=cogi,workgroup=pjwstk
Password:

Weryfikujemy operację podłączenia systemu plików:

[root@localhost root]# mount
(...)
//z/cogi on /mnt/z type smbfs (0)

Zadania

  1. Kilka słów wstępu. Poleceniem touch możemy zmieniać znaczniki czasowe na plikach (w przypadku gdy plik nie istnieje, to zostaje utworzony). Polecenie man służy do przeglądania podręcznika systemowego (np. aby obejrzeć stronę opisującą polecenie ls, należy wykonać polecenie man ls).

    1. w katalogu domowym, należy utworzyć trzy pliki o nazwach: plik_1, plik_2, plik_3

    2. następnie utworzyć drzewo katalogów katalog_1/katalog_2/katalog_3

    3. plik_1 przekopiować do katalog_1, plik_2 przekopiować do katalog_2, plik_3 przekopiować do katalog_3.

    4. wejść do katalog_3, usunąć plik_3

    5. zmienić nazwę katalog_3 na katalog_pusty

    6. usunąć pliki plik_1, plik_2, plik_3 z katalogu domowego

    7. usunąć rekursywnie utworzone drzewo katalogów

  2. Przećwicz polecenia more, less, cat przeglądając pliki konfiguracyjne (w katalog /etc).

Konfiguracja sieci

Wykorzystując polecenie ifconfig możemy uzyskać informację o obecnych w systemie interfejsach sieciowych, jak również, możemy dokonać ich konfiguracji.

Karty sieciowe Ethernet nazwane są w następujący sposób: ethX, gdzie X jest kolejnym numerem interfejsu. Interfejsy sieciowe numerowane są od zera.

Przydatne parametry:

-a - wyświetla informacje o wszystkich interfejsach (nawet nieaktywnych)

[root@localhost root]# ifconfig eth0 192.168.0.1 netmask 255.255.255.0
[root@localhost root]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0D:9D:59:E6:41
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20d:9dff:fe59:e641/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6172 errors:14 dropped:0 overruns:0 frame:35
          TX packets:290 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4869686 (4.6 Mb)  TX bytes:52657 (51.4 Kb)
          Interrupt:11 Base address:0x1000

ifconfig eth0 down - deaktywuje interfejs eth0

ifconfig eth0 up - aktywuje interfejs eth0, wykorzystując poprzednio ustawione parametry

Kolejnym przydatnym poleceniem jest polecenie route. Polecenie route pozwala na przeglądanie/zarządzanie statycznymi wpisami w tablicy routingu.

Przydatne parametry:

-n - nie wykonuje zapytań DNS

[root@localhost root]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
0.0.0.0         10.0.1.2        0.0.0.0         UG    0      0        0 eth0

route add - dodaje wpis

route del - usuwa wpis

[root@localhost root]# route add -host 192.168.0.1 dev eth0
[root@localhost root]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.1     0.0.0.0         255.255.255.255 UH    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
0.0.0.0         10.0.1.2        0.0.0.0         UG    0      0        0 eth0

[root@localhost root]# route add -net 172.16.0.0/24 dev eth0
[root@localhost root]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.1     0.0.0.0         255.255.255.255 UH    0      0        0 eth0
172.16.0.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
0.0.0.0         10.0.1.2        0.0.0.0         UG    0      0        0 eth0

[root@localhost root]# route del -host 192.168.0.1
[root@localhost root]# route del -net 172.16.0.0/24
[root@localhost root]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
0.0.0.0         10.0.1.2        0.0.0.0         UG    0      0        0 eth0

Zadania

  1. Uruchom dystrybucję z opcją nodhcp. Dokonaj konfiguracji interfejsu sieciowego eth0. Adres ip 192.168.0.X, gdzie X jest numerem Twojego stanowiska, maska podsieci 255.255.255.0. Dokonaj konfiguracji domyślnego rutingu, adres ip bramki 192.168.0.1

Kompilacja programów

Na ćwiczeniach będziemy wykorzystywali trzy kompilatory: javac, gcc, g++.

Kompilator javac

/* HelloWorldApp.java */
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); //Display the string.
    }
}

Użycie javac

[root@localhost root]# javac HelloWorldApp.java

Uruchomienie programu:

[root@localhost root]# java HelloWorldApp
HelloWorld!

Kompilator gcc

/* main.c */
#include <stdio.h>

int main(int argc, char **argv)
{
	printf("HelloWorld!\n);
	return 0;
}

Użycie gcc

[root@localhost root]# gcc -o main main.c

Uruchomienie programu:

[root@localhost root]# ./main
HelloWorld!

Kompilator g++

/* main.cpp */
#include <iostream.h>

int main(int argc, char **argv)
{
    cout << "Hello World!";

    return 0;
}

Użycie g++

[root@localhost root]# g++ -o main main.cpp

Uruchomienie programu:

[root@localhost root]# ./main
HelloWorld!

Zadania

  1. Dokonaj samodzielnej kompilacji i uruchomienia ww. programów.