Automatizare

Demo

  1. r2e - RSS to Email
    • Acest exercițiu se va desfășura pe swarm.
    • Rulați comanda
      r2e
    • Pentru a adăuga o adresă nouă de mail, rulați
      r2e new <your email>
    • Acum, vom adăuga un feed de urmărit:
      r2e add 'http://www.zoso.ro/feed/'
      r2e add 'http://workshop.rosedu.org/2014/feed.php?mode=list&linkto=diff&content=diff'
    • Pentru prima rulare, vom folosit un parametru special:
      r2e run --no-send
    • Pentru a primi feed-ul, se rulează
      r2e run
    • Pentru a automatizare, vom folosi crontab:
      crontab -e
    • Adaugam o linie:
      0 * * * * /usr/bin/r2e run
    • Dacă vrem să ștergem un feed din listă, rulăm
      r2e list
    • Apoi
      r2e delete <numărul corespunzător feed-ului>
  2. Make better use of your prompt
    • Exercițiul se va desfășura pe mașina locală.
    • Variabila PS1 conține formatarea prompt-ului. Pentru început, vom configura un prompt RedHat-like. Scrieți în terminal:
      PS1="[\u@\h \W]\\$ "
      • De ce este important să știm mereu cu ce user suntem logați, pe ce host și în ce director?
    • Add a bit of color:
      PS1="\[\033[0;31m\][\u@\h \W]\\$"
    • Organizat pe mai multe linii:
      PS1="[\[\033[32m\]\w]\[\033[0m\]\n\[\033[1;36m\]\u\[\033[1;33m\]-> \[\033[0m\]"
    • Alte informații utile, cum ar fi numărul de fișiere din directorul curent și dimensiunea acestora:
      PS1="[\w \u@\h: \$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files \$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')] " 
    • Un alt prompt util e cel care afișează numărul de job-uri din fundal:
      PS1="\[\e[1;32m\]\u@\H:\[\e[m\] \[\e[1;37m\]\w\[\e[m\]\n\[\e[1;33m\]hist:\! \[\e[0;33m\] \[\e[1;31m\]jobs:\j \$\[\e[m\] "
    • Pentru a face schimbarea permanantă, adăugăm linia copiată mai sus în ~/.bashrc.
      vim ~/.bashrc
      • Ca să încărcați schimbările în shell-ul curent folosiți comanda:
        source ~/.bashrc
    • Modificarea prompt-ului nu trebuie să fie mereu făcută printr-un oneliner înghesuit; se pot scrie funcții. Adăugați următorul cod în ~/.bashrc:
      function myps1 {
          local WHITE="\[\033[1;37m\]"
          local LIGHT_BLUE="\[\033[1;34m\]"
          local CYAN="\[\033[1;36m\]"
          local YELLOW="\[\033[1;33m\]"
          local NO_COLOUR="\[\033[0m\]"
          local RED="\[\033[1;31m\]"
          local prompt_color=$WHITE
          [ $UID -eq 0 ] && prompt_color=$RED
       
          case $TERM in
              xterm*|rxvt*)
                  TITLEBAR='\[\033]0;\u@\h:\w\007\]'
                  ;;
              *)
                  TITLEBAR=""
                  ;;
          esac
       
          PS1="$TITLEBAR\
      $prompt_color\u@\h:\
      $WHITE\w \
      $CYAN("'`ls -1 | wc -l`'" files)\
      ${CYAN}"'`j=$(jobs | wc -l); test $j -gt 0 && echo -n " (jobs: $j)"`'"
      ${prompt_color}\\$ \
      $NO_COLOUR"
      }
       
      myps1
      • Ca să încărcați schimbările în shell-ul curent folosiți comanda:
        source ~/.bashrc
    • Pentru mai multe opțiuni de configurare, folosiți man bash și căutați după prompting.
  3. SSH Aliases
    • Exercițiul se va desfășura pe mașina locală.
    • Duceți-vă în directorul de configurare ssh:
      cd ~/.ssh
    • Dacă nu există, creați fișierul config
      vim config
    • Introduceți următoarele linii:
      Host container
      <TAB> HostName houdini.cs.pub.ro
      <TAB> User root
      <TAB> Port 4<id_container>22
      • <TAB> = o apăsare a tastei TAB, nu scriere literală
    • Salvați și ieșiti. Acum încercați să vă conectați pe container:
      ssh container
    • Pe lângă o conexiune ssh normală, aceste scurtături merg și pentru scp. Pe sistemul local, rulați:
      touch example-file
      scp example-file container:/root
    • O listă cu toate opțiunile oferite de config poate fi găsită tastând man ssh_config.
  4. Scheduled update
    • Rulați comenzile de mai jos pe container, ca root.
    • Creați un director numit bin (în home-ul vostru) și apoi un fișier numit system-update (în folderul bin) în care să copiați următoarele linii:
      #!/bin/bash
       
      /usr/bin/apt-get clean && /usr/bin/apt-get autoclean && /usr/bin/apt-get -y autoremove && \
      	/usr/bin/apt-get update && /usr/bin/apt-get -y upgrade && /usr/bin/apt-get -y dist-upgrade && \
      	/usr/bin/apt-get clean && /usr/bin/apt-get autoclean && /usr/bin/apt-get -y autoremove
    • Pentru a putea rula scriptul, va trebui să aveți drept de execuția asupra lui:
      chmod +x system-update
    • Acum, vom automatiza cu ajutorul crontab
      vim /etc/crontab
    • Adăugați linia
      0 18 * * sun root /root/bin/system-update
    • De ce este util de automatizat acest task?

Expect

  1. Exercitiul acesta se va desfasura pe sistemul local.
    • Instalati urmatoarele pachete: expect, expect-dev
    • Rulati comanda autoexpect
    • Se va lansa un script care inregistreaza comenzile pe care le dati.
    • Logati-va pe swarm.cs.pub.ro cu contul vostru, dupa care dati comanda ls si cd documents.backup.
    • Iesiti de pe swarm.cs.pub.ro si apasati iar comanda exit. (o sa va apara un mesaj care va anunta ca s-a incheiat inregistrarea si s-a creat script.exp)
    • Rulati scriptul creat. Ce observati?
    • Editati script.exp. Stergeti liniile urmatoare
      expect -exact "\r
      Last login: Tue Jul 16 18:14:14 2013 from 141.85.226.36\r\r
      ^[\]0;<username-ul vostru>@swarm: ~^G<username-ul vostru>@swarm:~\$ "

      si adaugati urmatoarea:

      expect "<username-ul vostru@swarm:"
    • Rulati din nou script.exp
    • Ce observati?

Extra

  1. Your own Wiki
    • Exercițiul se desfășoară pe swarm.
    • Clonați următorul repository în home:
      git clone http://koala.cs.pub.ro/git/admin-public.git
    • În home-ul utilizatorului, creați directoarele ~/public_html și ~/public_html/dokuwiki:
      mkdir -p ~/public_html/dokuwiki
    • Reveniți la locația repository-ului clonat și rulați
      cd admin-public/dokuwiki/
    • În acest director, rulați
      ./dw-install ~/public_html/dokuwiki/ http://www.splitbrain.org/_media/projects/dokuwiki/dokuwiki-2012-01-25a.tgz http://swarm.cs.pub.ro/~<username de pe swarm>/dokuwiki

      unde <username de pe swarm> = userul cu care vă logați pe swarm.

    • Duceți-vă în public_html și rulați
      chmod -R a+w dokuwiki/conf
      chmod -R a+w dokuwiki/data
    • După aceea, accesați din browser
      http://swarm.cs.pub.ro/~<username de pe swarm>/dokuwiki/install.php
    • Completați rubricile cerute și save.
    • Apoi, reveniți în folderul ~/admin-public/dokuwiki al repo-ului clonat și rulați
      ./dw-post-install /home/<username de pe swarm>/public_html/dokuwiki/ /~<username de pe swarm>/dokuwiki/
    • Accesați http://swarm.cs.pub.ro/~<username de pe swarm>/dokuwiki. All done!
    • Informații în plus aici.
  2. Creați un script care să verifice o dată la o oră dacă load-ul sistemului vostru este mai mare de 0.5. În caz afirmativ, scriptul vă va trimite un mail corespunzător.
    • Hint: folosiți Postfix ca server de mail.
  3. Modificați scriptul anterior pentru a monitoriza spațiul liber de pe disc.
sesiuni/sysadmin/automatizare.txt · Last modified: 2014/07/08 17:53 by razvan