ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr
Operating System (O.S)
O.S Types Windows 1981 Macintosh 1984 Linux 1991 Unix 1969
ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΤΟΥ UNIX Λειτουργικό σύστημα πολλών χρηστών Υποστήριξη πολλαπλών διεργασιών με διαμέριση χρόνου Built in (και όχι patch) παροχή ασφάλειας Υποστήριξη δικτύων Υποστήριξη πολλών τεχνολογιών: IA-32, MIPS, x86-64, SPARC, DEC Alpha, Itanium, PowerPC, ARM, m68k, PA-RISC, s390, SuperH, M32R κτλ Τα πάντα είναι παραμετροποιήσιμα Τα πάντα είναι σταθερά Αυτοματοποίηση καθημερινών εντολών και ρουτινών Αποφυγή Δεσμεύσεων χρήστη Είναι γρήγορα Τα δυνατότερα συστήματα στον κόσμο χρησιμοποιούν linux
O.S Structure (1/3)
UNIX Architecture
ΛΟΓΑΡΙΑΣΜΟΣ ΧΡΗΣΤΗ (replay) Όνομα χρήστη (user name) Συνθηματικό (password) Κέλυφος αρχικής σύνδεσης Αρχική ομάδα Κατάλογος αφετηρίας Πώς κάνουμε login από το putty: Δίνουμε το hostname (ή την ip) και πατάμε open Δίνουμε το username Μετά το password και μας πάει στον αρχικό κατάλογο
ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΜΑΘΗΜΑ Putty Το βασικό μας εργαλείο Μας προσφέρει απομακρυσμένη σύνδεση μέσω ssh στον server που θα κάνουμε τις εργασίες μας στο εργαστήριο και στο σπίτι Vmware player Πλατφόρμα διαχείρισης εικονικών μηχανών (Virtual Machines), όπου θα τοποθετήσουμε το δικό μας server για την εξάσκηση στο σπίτι Kali Linux Διανομή Linux που θα χρησιμοποιήσουμε για εξάσκηση στο σπίτι Help!!! Πώς τα δουλεύω αυτά τα εργαλεία??? Ακολουθώ τον οδηγό που υπάρχει αναρτημένος στον evdoxo, στο διαδικτυακό χώρο του μαθήματος.
ΔΟΜΗ ΤΩΝ ΕΝΤΟΛΩΝ (replay) Υπάρχει διάκριση μεταξύ κεφαλαίων και πεζών γραμμάτων, δηλαδή είναι Case Sensitive Η κάθε εντολή έχει την εξής δομή: Εντολή [επιλογές] προέλευση προορισμός Ότι εμπεριέχεται στις επιλογές δηλαδή εντός των [] είναι προαιρετικό Το συμβολίζει ότι δεν μπορούν να χρησιμοποιηθούν δύο επιλογές ταυτόχρονα Υπάρχει και η δυνατότητα συνδυασμού των εντολών π.χ ls /home/nikos/ >list.txt mail boss
ΣΥΧΝΕΣ ΕΝΤΟΛΕΣ (1/2 replay) man: Εμφάνιση οδηγιών χρήσης εντολών ls: Εμφάνιση περιεχομένων καταλόγου pwd: Εμφάνιση τρέχοντος καταλόγου cd: Αλλαγή τρέχοντος καταλόγου mkdir: Δημιουργία καταλόγου rmdir: Διαγραφή καταλόγου cp: Αντιγραφή αρχείων mv:μετακίνηση, ή μετονομασία αρχείών rm: Διαγραφή αρχείων cat: Εμφάνιση περιεχομένων αρχείων lpr: Εκτύπωση αρχείων vi: Κειμενογράφος οθόνης passwd: Αλλαγή κωδικού χρήστη Προσοχή! Κατά την πληκτρολόγηση του κωδικού δεν τυπώνεται τίποτα στην οθόνη
ΣΥΧΝΕΣ ΕΝΤΟΛΕΣ (2/2 replay) whoami: Πληροφορίες χρήστη who: Εμφάνιση των χρηστών που είναι logged in w: Εμφάνιση των χρηστών που είναι logged in με περισσότερες λεπτομέρειες από την who finger: Εμφάνιση πληροφοριών χρήστη last: Εμφάνιση τελευταίων συνδέσεων clear: Καθαρισμός οθόνης cal: Προβολή ημερολογίου exit: Έξοδος από το τερματικό logout: Αποσύνδεση χρήστη more: Εμφάνιση περιεχομένου ανά σελίδα tail: Εμφανίζει τις πρώτες γραμμές του αρχείου head:εμφανίζει τις τελευταίες γραμμές του αρχείου
UNIX editors Vi Pico Nano Kwrite Gedit Κτλ
Εντολές Unix (replay) echo: Εμφάνιση στην οθόνη της ακολουθίας χαρακτήρων που δώσαμε όνομα μεταβλητής= τιμή μεταβλητής Π.χ myname=nikos $ όνομα μεταβλητής: επιστροφή τιμής της μεταβλητής Π.χ echo $myname declare [επιλογές ] όνομα μεταβλητής -a: η μεταβλητή είναι πίνακας -i: η μεταβλητή είναι ακέραιος -r: η μεταβλητή είναι μόνο για ανάγνωση
ΔΗΜΙΟΥΡΓΙΑ SCRIPT (replay) Προκειμένου να εκτελέσουμε μία σειρά εντολών πρέπει να δημιουργήσουμε ένα αρχείο script το οποίο να τις περιέχει. Κάθε αρχείο script ξεκινάει με το όνομα του φλοιού που είναι γραμμένο, ώστε να διερμηνευτεί ανάλογα. Π.χ #!/bin/bash #!/bin/bourne Ανακατεύθυνση του stdin < Είσοδος από αρχείο και όχι από το πληκτρολόγιο Ανακατεύθυνση του stdout > Ανακατεύθυνση εξόδου σε αρχείο. Αν δεν υπάρχει το αρχείο δημιουργείται. Αν υπάρχει τότε αντικαθίσταται. Ανακατεύθυνση του stdout με προσάρτηση >> Ανακατεύθυνση εξόδου σε αρχείο. Το αρχείο αν δεν υπάρχει δημιουργείται. Αν υπάρχει, τα δεδομένα εισέρχονται μετά την τελευταία γραμμή.
απλή επιλογή: if [συνθήκη] then <εντολές> else <εντολές> fi ΕΝΤΟΛΗ ΕΠΙΛΟΓΗΣ (replay) σύνθετη: if [συνθήκη] then <εντολές> elif [συνθήκη] then <εντολές> else <εντολές> fi If OR case??? case <έκφραση> in <περίπτωση 1> <εντολές1>;; <περίπτωση 2> <εντολές2>;;... <περίπτωση ν> <εντολέςν>;; esac
ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ (replay) Δομές επανάληψης Σύνταξη: <δομή επανάληψης> do <εντολές> done (1) while <συνθήκη> do <εντολές> done for (έκφραση1; έκφραση2; έκφραση3) > do <εντολές> done select <έκφραση> in λίστα do <εντολές> done (2) (3)
ΣΩΛΗΝΩΣΕΙΣ PIPES (replay) Τροφοδότηση της δεύτερης εντολή με το αποτέλεσμα (έξοδος) της πρώτης. Αντί να χρησιμοποιούμε προσωρινές μεταβλητές μεταφέρουμε το αποτέλεσμα της προηγούμενης εντολής στην επόμενη. π.χ cat php.ini more ls /etc more w wc -l
ΚΑΝΟΝΙΚΕΣ ΕΚΦΡΑΣΕΙΣ (replay) Οι κανονικές εκφράσεις χρησιμοποιούνται από διάφορες εντολές στο unix και κυρίως από την sed, την grep και την awk, οι οποίες έχουν να κάνουν με την επεξεργασία συμβολοσειρών. [ ] Οτιδήποτε περιέχεται στις αγκύλες. Ταιριάζει με οποιονδήποτε χαρακτήρα Συμβολοσειρά$ Ταιριάζει patterns που τελειώνουν με τη Συμβολοσειρά ^Συμβολοσειρά Ταιριάζει patterns που αρχίζουν με τη Συμβολοσειρά /^$/ Ταιριάζει κενές γραμμές \ Ακυρώνει την ειδική σημασία των μεταχαρακτήρων
ΥΠΟΛΟΓΙΣΜΟΣ ΕΚΦΡΑΣΕΩΝ (replay) Δεδομένου ότι ο φλοιός δεν υποστηρίζει πράξεις, χρησιμοποιούμε το βοηθητικό πρόγραμμα expr, προκειμένου να τις υπολογίσουμε. Οι πράξεις που υποστηρίζονται με τα αντίστοιχα σύμβολα είναι + Πρόσθεση - Αφαίρεση * Πολλαπλασιασμός / Διαίρεση % Υπόλοιπο διαίρεσης = Απόδοση τιμής == Ισότητα!= Διάφορο
Linux Guru practical examples
Παράδειγμα 1 Τι θα εμφανιστεί στην οθόνη με την εκτέλεση του παρακάτω προγράμματος κελύφους : #script01 #----------------------------------- echo first parameter : $1 echo second parameter : $2 echo third parameter : $3 echo ninth parameter : $9 echo tenth parameter : $10 echo eleventh parameter : $11 echo No of parameters : $# echo all parameters : $* echo all parameters : $@ shift echo first parameter : $1 echo all parameters : $* με την γραμμή εντολής script01 one two 3 4 5 6 7 eight 9 ten 11
Λύση first parameter : one second parameter : two third parameter : 3 ninth parameter : 9 tenth parameter : one0 eleventh parameter : one1 No of parameters : 11 all parameters : one two 3 4 5 6 7 eight 9 ten 11 all parameters : one two 3 4 5 6 7 eight 9 ten 11 first parameter : two all parameters : two 3 4 5 6 7 eight 9 ten 11
Παράδειγμα 2 Δημιουργήστε ένα πρόγραμμα σεναρίου κελύφους (script) με μια παράμετρο που να δημιουργεί ένα αρχείο με όνομα την παράμετρο. Αν δοθεί χωρίς παράμετρο να δημιουργεί το myfile.txt. Για περισσότερες από μια παραμέτρους να βγαίνει μήνυμα λάθους. Αν το αρχείο με όνομα την παράμετρο υπάρχει, να κάνει έλεγχο επικάλυψης (overwrite) και να ρωτάει το χρήστη τι ενέργεια θέλει να κάνει παίρνοντας ως είσοδο την επιλογή του.
Λύση if [ $# -gt 1 ]; then echo usage: test1 parameter elif [ $# -eq 0 ]; then touch myfile.txt else if [ -f $1 ]; then echo file $1 exists. Overwrite? Yy/Nn read answer if [ \( $answer!= y \) a \( $answer!= Y \) ]; then echo file NOT overwritten else >$1 echo file $1 overwritten fi else touch $1 echo file $1 created fi fi
root@oslab:~$ sudo shutdown h now