This shows you the differences between two versions of the page.
gsr:laboratoare:laborator-02 [2016/10/19 16:38] alexandru.carp |
gsr:laboratoare:laborator-02 [2016/10/20 21:05] (current) alexandru.carp [b) Reguli de jurnalizare] |
||
---|---|---|---|
Line 74: | Line 74: | ||
Pentru a detașa un proces de un terminal se folosesc comenzi precum ''nohup'', ''dtach'' și ''disown''. | Pentru a detașa un proces de un terminal se folosesc comenzi precum ''nohup'', ''dtach'' și ''disown''. | ||
- | Folosiți comanda ''wget'' pentru a descărca fișierul ''.torrent'' de [[http://cdimage.debian.org/debian-cd/8.2.0/i386/bt-cd/debian-mac-8.2.0-i386-netinst.iso.torrent|aici]]. | + | Folosiți comanda ''wget'' pentru a descărca fișierul ''.torrent'' de [[http://cdimage.debian.org/debian-cd/8.6.0/amd64/bt-cd/debian-8.6.0-amd64-netinst.iso.torrent|aici]]. |
==== b) disown ==== | ==== b) disown ==== | ||
Line 101: | Line 101: | ||
Trimiteți un semnal procesului pentru a-i încheia execuția și apoi reporniți-l sub ''nohup'' astfel încât ieșirea standard (//standard output//, //stdout//) să fie redirectată la ''/dev/null'' iar ieșirea de eroare standard (//standard error//, //stderr//) să fie redirectată în fișierul ''err.log''. Investigați cu ''lsof'' unde pointează descriptorii standard ai procesului. | Trimiteți un semnal procesului pentru a-i încheia execuția și apoi reporniți-l sub ''nohup'' astfel încât ieșirea standard (//standard output//, //stdout//) să fie redirectată la ''/dev/null'' iar ieșirea de eroare standard (//standard error//, //stderr//) să fie redirectată în fișierul ''err.log''. Investigați cu ''lsof'' unde pointează descriptorii standard ai procesului. | ||
- | ===== Demo: Inspectarea configurației cron ===== | + | ===== 03. Serviciul cron ===== |
+ | ==== a) Demo: Inspectarea configurației cron ==== | ||
+ | |||
+ | /* | ||
<note> | <note> | ||
Pentru task-urile de ''cron'', folositi masina virtuala din ''/mnt/sda5/gsr/'' | Pentru task-urile de ''cron'', folositi masina virtuala din ''/mnt/sda5/gsr/'' | ||
</note> | </note> | ||
+ | */ | ||
Pentru a vedea configurația ''cron'' a sistemului inspectăm configurațiile din fișierele/directoarele ''/etc/cron*''. Fișierele ''/etc/cron.d/*'' și fișierul ''/etc/crontab'' conțin configurații standard ''cron'' la nivelul sistemului. Liniile de configurare urmează sintaxa crontab așa cum este exemplificată [[http://techie-experience.blogspot.ro/2012/10/crontab.html|aici]]. | Pentru a vedea configurația ''cron'' a sistemului inspectăm configurațiile din fișierele/directoarele ''/etc/cron*''. Fișierele ''/etc/cron.d/*'' și fișierul ''/etc/crontab'' conțin configurații standard ''cron'' la nivelul sistemului. Liniile de configurare urmează sintaxa crontab așa cum este exemplificată [[http://techie-experience.blogspot.ro/2012/10/crontab.html|aici]]. | ||
Line 123: | Line 127: | ||
În subdirectorul ''/var/spool/cron/crontabs/'' se găsesc job-urile cron active (marcate per utilizator). | În subdirectorul ''/var/spool/cron/crontabs/'' se găsesc job-urile cron active (marcate per utilizator). | ||
- | ===== Configurare cron cu standard output ===== | ||
- | Dacă dorim să avem un job care să ruleze periodic vom crea o intrare în crontab-ul utilizatorului curent. | + | ==== b) Configurare cron cu standard output ==== |
+ | |||
+ | Dacă dorim să avem un job care să ruleze periodic vom crea o intrare în crontab-ul utilizatorului ''root''. | ||
Următorul exercițiu este didactic, ca să putem urmări comportamentul ''cron''. | Următorul exercițiu este didactic, ca să putem urmări comportamentul ''cron''. | ||
Line 135: | Line 140: | ||
Folosim calea completă către comanda ''echo'' pentru că nu știm cum arată variabila ''PATH'' în mediul în care rulează ''cron''. | Folosim calea completă către comanda ''echo'' pentru că nu știm cum arată variabila ''PATH'' în mediul în care rulează ''cron''. | ||
- | Adăugați comanda de mai sus să ruleze la fiecare două minute prin alterarea crontab-ului utilizatorului ''student''. După adăugare urmăriți spool-ul cron în ''/var/spool/cron/crontabs/student''. | + | Adăugați comanda de mai sus să ruleze la fiecare două minute prin alterarea crontab-ului utilizatorului ''root''. După adăugare urmăriți spool-ul cron în ''/var/spool/cron/crontabs/root''. |
- | În urma funcționării corecte, veți primi un e-mail către utilizatorul ''student'' cu output-ul comenzii. | + | În urma funcționării corecte, veți vedea o intrare in ''/var/log/syslog'' care arata ca a fost executata comanda. |
<note tip> | <note tip> | ||
- | Puteți verifica e-mail-ul primit inspecand directorul ''Maildir/new/'' | + | Dupa ce configurati regulile de cron, restartati serviciul ''cron''. |
</note> | </note> | ||
<note tip> | <note tip> | ||
- | Pentru crearea intrării în crontab-ul utilizatorului ''student'' urmăriți indicațiile de [[http://techie-experience.blogspot.ro/2012/10/crontab.html|aici]]. | + | Pentru crearea intrării în crontab-ul utilizatorului ''root'' urmăriți indicațiile de [[http://techie-experience.blogspot.ro/2012/10/crontab.html|aici]]. |
</note> | </note> | ||
- | ===== Alte configurări cron ===== | + | ==== c) Alte configurări cron ==== |
- | Actualizați comanda ''cron'' de mai sus astfel încât output-ul comenzii să nu mai fie livrat prin e-mail ci să fie adăugat într-un fișier dat. Output-ul să conțină și data la care a fost rulată comanda. | + | Actualizați comanda din ''cron'' de mai sus astfel încât output-ul comenzii să fie adăugat într-un fișier dat. Output-ul să conțină și data la care a fost rulată comanda. |
Instalați pachetul ''debsums''. Urmăriți ce configurări de cron sunt adăugate la instalarea pachetului. | Instalați pachetul ''debsums''. Urmăriți ce configurări de cron sunt adăugate la instalarea pachetului. | ||
Line 160: | Line 165: | ||
</note> | </note> | ||
- | ===== Configurare serviciu cron de pornire client Bittorrent ===== | + | ==== d) Configurare serviciu cron de pornire client Bittorrent ==== |
Instalați un client de Bittorrent care funcționează în linia de comandă, precum ''transmission-cli'' sau ''bittorrent'' sau ''bittornado'' și porniți-l în background (folosind ''nohup'') ca să descarce un anumit conținut Bittorrent. Găsiți un fișier ''.torrrent'' pe Internet și descărcați-l. | Instalați un client de Bittorrent care funcționează în linia de comandă, precum ''transmission-cli'' sau ''bittorrent'' sau ''bittornado'' și porniți-l în background (folosind ''nohup'') ca să descarce un anumit conținut Bittorrent. Găsiți un fișier ''.torrrent'' pe Internet și descărcați-l. | ||
Line 167: | Line 172: | ||
Plasați script-ul în crontab cu verificare la 10 minute. | Plasați script-ul în crontab cu verificare la 10 minute. | ||
- | ===== Gestionare client de BitTorrent folosind supervisord ===== | + | |
+ | ==== e) Gestionare client de BitTorrent folosind supervisord ==== | ||
Folosiți [[http://supervisord.org/|supervisord]] pentru a porni și gestiona clientul BitTorrent de mai sus. | Folosiți [[http://supervisord.org/|supervisord]] pentru a porni și gestiona clientul BitTorrent de mai sus. | ||
Line 177: | Line 183: | ||
</note> | </note> | ||
- | ===== Funcționarea NTP ===== | + | ===== 04. Serviciul NTP ===== |
+ | |||
+ | ==== a) Funcționarea NTP ==== | ||
Pentru a verifica funcționarea NTP (//Network Time Protocol//) o soluție este instalarea utilitarului ''ntpdate''. Dacă nu-l aveți instalat, instalați-l folosind comanda<code> | Pentru a verifica funcționarea NTP (//Network Time Protocol//) o soluție este instalarea utilitarului ''ntpdate''. Dacă nu-l aveți instalat, instalați-l folosind comanda<code> | ||
Line 185: | Line 193: | ||
Aveți două utilitare pe care le puteți folosi interschimbabil pentru actualizarea timpului sistemului: ''ntpdate'' care primește ca argument un server NTP, și ''nptdate-debian'' care folosește serverele configurate în ''/etc/default/ntpdate'' (directiva ''NTPSERVERS''). | Aveți două utilitare pe care le puteți folosi interschimbabil pentru actualizarea timpului sistemului: ''ntpdate'' care primește ca argument un server NTP, și ''nptdate-debian'' care folosește serverele configurate în ''/etc/default/ntpdate'' (directiva ''NTPSERVERS''). | ||
- | ===== Configurare server NTP. Sincronizare sisteme ===== | + | ==== b) Configurare server NTP. Sincronizare sisteme ==== |
Instalați, dacă nu este instalat serverul ''NTP'' prin intermediul pachetului ''ntp''. Serverul va porni automat și veți putea verifica faptul că ascultă conexiuni pe portul ''123'' UDP folosind comanda<code> | Instalați, dacă nu este instalat serverul ''NTP'' prin intermediul pachetului ''ntp''. Serverul va porni automat și veți putea verifica faptul că ascultă conexiuni pe portul ''123'' UDP folosind comanda<code> | ||
Line 206: | Line 214: | ||
</note> | </note> | ||
+ | ===== 05. Jurnalizare ===== | ||
+ | |||
+ | ==== a) Investigare configuratie syslog ==== | ||
+ | |||
+ | Pe mașina virtulă verificați dacă daemonul de syslog este instalat (Hint: rsyslog). | ||
+ | <code> | ||
+ | root@heimdall:~# apt-get install rsyslog | ||
+ | Reading package lists... Done | ||
+ | Building dependency tree | ||
+ | Reading state information... Done | ||
+ | rsyslog is already the newest version. | ||
+ | 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. | ||
+ | </code> | ||
+ | |||
+ | ==== b) Reguli de jurnalizare ==== | ||
+ | |||
+ | Adaugati în ''/etc/rsyslog.conf'' o intrare prin care TOATE mesajele din sistem sa fie înregistrate în ''/var/log/all_logs'' | ||
+ | <code> | ||
+ | root@heimdall:~# tail -n 1 /etc/rsyslog.conf | ||
+ | *.* -/var/log/all_logs | ||
+ | |||
+ | Se adauga un minus (-) pentru a se evita sincronizarea fisierului dupa fiecare mesaj syslog (fiind vorba despre toate mesajele din sistem). | ||
+ | </code> | ||
+ | |||
+ | Creati fisierul ''/var/log/all_logs'', apoi configurati owner-ul ca fiind user-ul sub care ruleaza ''rsyslog'': | ||
+ | <code> | ||
+ | # touch /var/log/all_logs | ||
+ | # chown syslog:adm /var/log/all_logs | ||
+ | </code> | ||
+ | |||
+ | Reporniți daemonul ''rsyslog'' și verificați conținutul fișierului ''/var/log/all_logs''. | ||
+ | <code> | ||
+ | root@heimdall:~# /etc/init.d/rsyslog restart | ||
+ | Stopping enhanced syslogd: rsyslogd. | ||
+ | Starting enhanced syslogd: rsyslogd. | ||
+ | |||
+ | root@heimdall:~# tail /var/log/all_logs | ||
+ | Nov 9 15:34:04 heimdall kernel: imklog 5.8.5, log source = /proc/kmsg started. | ||
+ | Nov 9 15:34:04 heimdall rsyslogd: [origin software="rsyslogd" swVersion="5.8.5" x-pid="2604" x-info="http://www.rsyslog.com"] start | ||
+ | </code> | ||
+ | |||
+ | ==== c) Generate mesaje cu logger ==== | ||
+ | |||
+ | Folosind comanda ''logger'', generați 5 mesaje de log cu facilitatea mail și cu proritatea info, care să conțină textele "mail log 1" ... "mail log 5". Verificați prezența mesajelor în ''/var/log/all_logs''. | ||
+ | <code> | ||
+ | root@heimdall:~# logger -p mail.info "mail log 1" | ||
+ | |||
+ | root@heimdall:~# logger -p mail.info "mail log 2" | ||
+ | |||
+ | root@heimdall:~# logger -p mail.info "mail log 3" | ||
+ | |||
+ | root@heimdall:~# logger -p mail.info "mail log 4" | ||
+ | |||
+ | root@heimdall:~# logger -p mail.info "mail log 5" | ||
+ | |||
+ | root@heimdall:~# tail /var/log/all_logs | ||
+ | Nov 9 15:34:04 heimdall kernel: imklog 5.8.5, log source = /proc/kmsg started. | ||
+ | Nov 9 15:34:04 heimdall rsyslogd: [origin software="rsyslogd" swVersion="5.8.5" x-pid="2604" x-info="http://www.rsyslog.com"] start | ||
+ | Nov 9 15:36:55 heimdall root: mail log 1 | ||
+ | Nov 9 15:36:57 heimdall root: mail log 2 | ||
+ | Nov 9 15:36:58 heimdall root: mail log 3 | ||
+ | Nov 9 15:36:59 heimdall root: mail log 4 | ||
+ | Nov 9 15:37:00 heimdall root: mail log 5 | ||
+ | </code> | ||
+ | |||
+ | ==== d) Rotirea fisierelor de log ==== | ||
+ | |||
+ | Modificați ''/etc/logrotate.conf'' astfel încat fisierul ''/var/log/all_logs'' să fie rotit zilnic, folosind până la maxim 10 fișiere, fișire care să fie comprimate. Logurile trebuie să fie trimiste pe email la sysadmin@gsr.cs.pub.ro. (Hint: ''man logrotate'') | ||
+ | <code> | ||
+ | root@heimdall:~# tail -n 8 /etc/logrotate.conf | ||
+ | /var/log/all_logs { | ||
+ | missingok | ||
+ | daily | ||
+ | create 0660 root utmp | ||
+ | compress | ||
+ | rotate 10 | ||
+ | mail sysadmin@gsr.cs.pub.ro | ||
+ | } | ||
+ | </code> | ||
/* | /* | ||