SlideShare une entreprise Scribd logo
1  sur  64
Télécharger pour lire hors ligne
Introdu¸˜o
                       ca
                  Sysadmin
                      DBA
       Considera¸˜es finais
                 co




Perl para Sysadmins e DBA’s

       Lindolfo ”Lorn” Rodrigues




 Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                       ca
                                  Sysadmin
                                      DBA
                       Considera¸˜es finais
                                 co


$ whoami




  $ id
  $ uid=1000(lorn) gid=100(users)
  grupos=11(#sao-paulo.pm), 17(#slackware-br), 18(#catalyst),
  19(#moose),83(#perl6)




                 Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                      ca
                                 Sysadmin
                                     DBA
                      Considera¸˜es finais
                                co


Agenda



     Sysadmin
         One-liners
         Parsers de log
         Automatiza¸˜es
                     co

     DBA
         ETL
         Data Cleaning




                Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                      ca
                                 Sysadmin
                                     DBA
                      Considera¸˜es finais
                                co


Agenda



     Sysadmin
         One-liners
         Parsers de log
         Automatiza¸˜es
                     co

     DBA
         ETL
         Data Cleaning




                Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                      ca
                                 Sysadmin
                                     DBA
                      Considera¸˜es finais
                                co


Agenda



     Sysadmin
         One-liners
         Parsers de log
         Automatiza¸˜es
                     co

     DBA
         ETL
         Data Cleaning




                Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                      ca
                                 Sysadmin
                                     DBA
                      Considera¸˜es finais
                                co


Agenda



     Sysadmin
         One-liners
         Parsers de log
         Automatiza¸˜es
                     co

     DBA
         ETL
         Data Cleaning




                Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                      ca
                                 Sysadmin
                                     DBA
                      Considera¸˜es finais
                                co


Agenda



     Sysadmin
         One-liners
         Parsers de log
         Automatiza¸˜es
                     co

     DBA
         ETL
         Data Cleaning




                Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                      ca
                                 Sysadmin
                                     DBA
                      Considera¸˜es finais
                                co


Agenda



     Sysadmin
         One-liners
         Parsers de log
         Automatiza¸˜es
                     co

     DBA
         ETL
         Data Cleaning




                Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                      ca
                                 Sysadmin
                                     DBA
                      Considera¸˜es finais
                                co


Agenda



     Sysadmin
         One-liners
         Parsers de log
         Automatiza¸˜es
                     co

     DBA
         ETL
         Data Cleaning




                Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                          ca
                                     Sysadmin
                                         DBA
                          Considera¸˜es finais
                                    co


One-liners


       Perl na linha de comando
       Lembra muito sed/awk, com todo o poder da PCRE
             sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
             perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
             awk: awk ’{print $1;}’ arquivo.txt
             perl: perl -npe ’print $F[0]’ arquivo.txt
       Perl = Shell Script + awk + sed + ... + CPAN!
       o/




                    Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                          ca
                                     Sysadmin
                                         DBA
                          Considera¸˜es finais
                                    co


One-liners


       Perl na linha de comando
       Lembra muito sed/awk, com todo o poder da PCRE
             sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
             perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
             awk: awk ’{print $1;}’ arquivo.txt
             perl: perl -npe ’print $F[0]’ arquivo.txt
       Perl = Shell Script + awk + sed + ... + CPAN!
       o/




                    Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                          ca
                                     Sysadmin
                                         DBA
                          Considera¸˜es finais
                                    co


One-liners


       Perl na linha de comando
       Lembra muito sed/awk, com todo o poder da PCRE
             sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
             perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
             awk: awk ’{print $1;}’ arquivo.txt
             perl: perl -npe ’print $F[0]’ arquivo.txt
       Perl = Shell Script + awk + sed + ... + CPAN!
       o/




                    Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                          ca
                                     Sysadmin
                                         DBA
                          Considera¸˜es finais
                                    co


One-liners


       Perl na linha de comando
       Lembra muito sed/awk, com todo o poder da PCRE
             sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
             perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
             awk: awk ’{print $1;}’ arquivo.txt
             perl: perl -npe ’print $F[0]’ arquivo.txt
       Perl = Shell Script + awk + sed + ... + CPAN!
       o/




                    Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                          ca
                                     Sysadmin
                                         DBA
                          Considera¸˜es finais
                                    co


One-liners


       Perl na linha de comando
       Lembra muito sed/awk, com todo o poder da PCRE
             sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
             perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
             awk: awk ’{print $1;}’ arquivo.txt
             perl: perl -npe ’print $F[0]’ arquivo.txt
       Perl = Shell Script + awk + sed + ... + CPAN!
       o/




                    Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                          ca
                                     Sysadmin
                                         DBA
                          Considera¸˜es finais
                                    co


One-liners


       Perl na linha de comando
       Lembra muito sed/awk, com todo o poder da PCRE
             sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
             perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
             awk: awk ’{print $1;}’ arquivo.txt
             perl: perl -npe ’print $F[0]’ arquivo.txt
       Perl = Shell Script + awk + sed + ... + CPAN!
       o/




                    Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                          ca
                                     Sysadmin
                                         DBA
                          Considera¸˜es finais
                                    co


One-liners


       Perl na linha de comando
       Lembra muito sed/awk, com todo o poder da PCRE
             sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
             perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
             awk: awk ’{print $1;}’ arquivo.txt
             perl: perl -npe ’print $F[0]’ arquivo.txt
       Perl = Shell Script + awk + sed + ... + CPAN!
       o/




                    Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                       ca
                                  Sysadmin
                                      DBA
                       Considera¸˜es finais
                                 co


One-liners




       find /var/www -iname ”*.html-exec perl -i.bck -npe
       ’s/foo/bar/g’ ’’
       perl -MDBD::mysql -e
       ’DBD::mysql-¿connect(’dbname=yapc;Host=192.168.1.2’,
       ’root’, ’yapc2009’)




                 Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                       ca
                                  Sysadmin
                                      DBA
                       Considera¸˜es finais
                                 co


One-liners




       find /var/www -iname ”*.html-exec perl -i.bck -npe
       ’s/foo/bar/g’ ’’
       perl -MDBD::mysql -e
       ’DBD::mysql-¿connect(’dbname=yapc;Host=192.168.1.2’,
       ’root’, ’yapc2009’)




                 Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                         ca
                                    Sysadmin
                                        DBA
                         Considera¸˜es finais
                                   co


One-liners




       dicas.txt ( canivete sui¸o one-liners )
                               c
       App::Rad!




                   Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                         ca
                                    Sysadmin
                                        DBA
                         Considera¸˜es finais
                                   co


One-liners




       dicas.txt ( canivete sui¸o one-liners )
                               c
       App::Rad!




                   Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                                ca
                                           Sysadmin
                                               DBA
                                Considera¸˜es finais
                                          co


One-liners




1   u s e App : : Rad ' i n c l u d e ' ;
2   App : : Rad−>run ;




                          Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                          ca
                                     Sysadmin
                                         DBA
                          Considera¸˜es finais
                                    co


One-liners


        $ perl dicas.pl include ’arruma string’ -i.bck -npe
        ’s/foo/bar/g’ arquivo.txt
        $ perl dicas.pl

    1   Usage : dicas . pl command [ arguments ]
    2
    3   Available Commands :
    4       arruma_string
    5       help             show syntax and available commands
    6       include          include one−liner as a command


        $ perl dicas.pl arruma string outro arquivo.txt


                    Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                          ca
                                     Sysadmin
                                         DBA
                          Considera¸˜es finais
                                    co


One-liners


        $ perl dicas.pl include ’arruma string’ -i.bck -npe
        ’s/foo/bar/g’ arquivo.txt
        $ perl dicas.pl

    1   Usage : dicas . pl command [ arguments ]
    2
    3   Available Commands :
    4       arruma_string
    5       help             show syntax and available commands
    6       include          include one−liner as a command


        $ perl dicas.pl arruma string outro arquivo.txt


                    Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                          ca
                                     Sysadmin
                                         DBA
                          Considera¸˜es finais
                                    co


One-liners


        $ perl dicas.pl include ’arruma string’ -i.bck -npe
        ’s/foo/bar/g’ arquivo.txt
        $ perl dicas.pl

    1   Usage : dicas . pl command [ arguments ]
    2
    3   Available Commands :
    4       arruma_string
    5       help             show syntax and available commands
    6       include          include one−liner as a command


        $ perl dicas.pl arruma string outro arquivo.txt


                    Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                   ca
                              Sysadmin
                                  DBA
                   Considera¸˜es finais
                             co


One-liners




             Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                           ca
                                      Sysadmin
                                          DBA
                           Considera¸˜es finais
                                     co


Parsers



          Como mandar o log do Apache para o Syslog ( tutorial no
          ultimo slide )
          PABX
              Usar Spreadsheet::Write
              Customizar com cores, gerentes/chefes adoram cores
          maillog




                     Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                           ca
                                      Sysadmin
                                          DBA
                           Considera¸˜es finais
                                     co


Parsers



          Como mandar o log do Apache para o Syslog ( tutorial no
          ultimo slide )
          PABX
              Usar Spreadsheet::Write
              Customizar com cores, gerentes/chefes adoram cores
          maillog




                     Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                           ca
                                      Sysadmin
                                          DBA
                           Considera¸˜es finais
                                     co


Parsers



          Como mandar o log do Apache para o Syslog ( tutorial no
          ultimo slide )
          PABX
              Usar Spreadsheet::Write
              Customizar com cores, gerentes/chefes adoram cores
          maillog




                     Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                           ca
                                      Sysadmin
                                          DBA
                           Considera¸˜es finais
                                     co


Parsers



          Como mandar o log do Apache para o Syslog ( tutorial no
          ultimo slide )
          PABX
              Usar Spreadsheet::Write
              Customizar com cores, gerentes/chefes adoram cores
          maillog




                     Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                           ca
                                      Sysadmin
                                          DBA
                           Considera¸˜es finais
                                     co


Parsers



          Como mandar o log do Apache para o Syslog ( tutorial no
          ultimo slide )
          PABX
              Usar Spreadsheet::Write
              Customizar com cores, gerentes/chefes adoram cores
          maillog




                     Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                                    ca
                                               Sysadmin
                                                   DBA
                                    Considera¸˜es finais
                                              co


Pr´-requisitos
  e


    Hash tables, o que s˜o e como pode ser usada?
                        a

1   my %idade = (
2           ” r a u l s e i x a s ” => 1 0 0 0 0 ,
3           ” a r t h u r d e n t ” => 42
4   );
5   p r i n t $ idade { ' a r t h u r d e n t ' } ;
6   # a d i c i o n a n d o i t e n s ao h a s h
7   $ idade { ” j e r e m i a s ” }=27;
8   # deletando itens
9   d e l e t e ( $ idade { ' r a u l s e i x a s ' } ) ;




                              Lindolfo ”Lorn” Rodrigues     Perl para Sysadmins e DBA’s
Introdu¸˜o
                                              ca
                                         Sysadmin
                                             DBA
                              Considera¸˜es finais
                                        co


Pr´-requisitos
  e



    Estrutura de um hash:

1   $ VAR1 = {
2                 ' j e r e m i a s ' => 2 7 ,
3                 ' a r t h u r d e n t ' => 4 2 ,
4                 ' r a u l s e i x a s ' => −10000
5            };




                        Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                                 ca
                                            Sysadmin
                                                DBA
                                 Considera¸˜es finais
                                           co


Pega ”spider”

     Pegando o ”invasor” do seu site

 1   w h i l e (my $ line = <STDIN >) {
 2               my ( $ ip ) = s p l i t ( /  s / , $ line ) ;
 3                    $ hash_count { $ ip } = $ hash_count { $ ip } + 1 ;
 4   }
 5
 6   p r i n t Dumper %hash_count ;
 7   f o r e a c h my $ line ( s o r t { $ hash_count { $ b } <=> $ hash_count {←
             $a } } k e y s
 8   %hash_count ) {
 9                 my $ acessos = $ hash_count { $ line } ;
10                      p r i n t ” i p : $ l i n e  t a c e s s o s :  t $ a c e s s o s n” ;
11   }




                           Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                                     ca
                                                Sysadmin
                                                    DBA
                                     Considera¸˜es finais
                                               co


Pega ”spider”




1   $ VAR1 = {
2                     ' 1 2 8 . 9 8 . 1 2 0 . 8 4 ' => 2 ,
3                     ' 3 8 . 9 8 . 1 2 0 . 8 4 ' => 6 ,
4                     ' 1 1 8 . 9 8 . 1 2 0 . 8 4 ' => ' 1 '
5                };
6   ip : 3 8 . 9 8 . 1 2 0 . 8 4        acessos :              6
7   ip : 1 2 8 . 9 8 . 1 2 0 . 8 4      acessos :              2
8   ip : 1 1 8 . 9 8 . 1 2 0 . 8 4      acessos :              1




                              Lindolfo ”Lorn” Rodrigues    Perl para Sysadmins e DBA’s
Introdu¸˜o
                                             ca
                                        Sysadmin
                                            DBA
                             Considera¸˜es finais
                                       co


Achando arquivo duplicados


 1   my @targets = ( ' /home/ l o r n / f o o / ' ) ;
 2   my $ tree = File : : Find : : Object−>new ( { } , @targets ) ;
 3   my %hash_file = ( ) ;
 4   my $ md5 = Digest : : MD5−>new ;
 5   w h i l e (my $ r = $ tree−>n e x t ( ) ) {
 6            i f ( −d $ r ) {
 7                    next ;
 8            }
 9            open (my $ file , '< ' , $ r ) or d i e ” $ !  n” ;
10            $ md5−>addfile ( $ file ) ;
11            my $ digest = $ md5−>hexdigest ;
12            c l o s e $ file ;
13            my @files = ( $ r ) ;
14            pu sh ( @ { $ hash_file { $ digest } } , $ r ) ;
15   }



                       Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                              ca
                                         Sysadmin
                                             DBA
                              Considera¸˜es finais
                                        co


Achando arquivo duplicados



1   f o r e a c h my $ md5hex ( s o r t { $ hash_file { $ a } <=> $ hash_file {←
            $b } } k e y s
2           %hash_file ) {
3            i f ( s c a l a r ( @ { $ hash_file { $ md5hex } } ) > 1 ) {
4                            p r i n t ” A r q u i v o d u p l i c a d o !  n” ;
5                            f o r e a c h my $ file ( @ { $ hash_file { $ md5hex } } ) {
6                                     p r i n t ” f i l e : $ f i l e n” ;
7                            }
8                    }
9   }




                        Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                                   ca
                                              Sysadmin
                                                  DBA
                                   Considera¸˜es finais
                                             co


Achando arquivo duplicados


 1   $ VAR1 = {
 2                 ' 4 b 1 a 7 8 5 a 1 d d 6 d b 7 b 5 e 4 f 8 6 c 7 e 5 6 c 2 d 1 d ' =>
 3                 [
 4                     '/ Users / lo r n / foo / arquivo2 . txt ' ,
 5                     '/ Users / lo r n / foo / arquivo23 . txt '
 6                 ],
 7
 8                 ' 3789 f a 4 8 9 8 d 7 b 7 f 1 5 1 3 c 8 a d 3 9 6 5 c 3 f 9 a ' =>
 9                 [
10                     '/ Users / lo r n / foo / arquivo1 . txt ' ,
11                     '/ Users / lo r n / foo / arquivo11 . txt ' ,
12                     ' / U s e r s / l o r n / f o o /tmp/ a r q u i v o 4 2 . t x t '
13                 ]
14            };




                             Lindolfo ”Lorn” Rodrigues       Perl para Sysadmins e DBA’s
Introdu¸˜o
                                      ca
                                 Sysadmin
                                     DBA
                      Considera¸˜es finais
                                co


Automatizando tarefas




      Qualquer programa com opcao de include, pode ser
      automatizado
      Apache, Samba, Bind




                Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                      ca
                                 Sysadmin
                                     DBA
                      Considera¸˜es finais
                                co


Automatizando tarefas




      Qualquer programa com opcao de include, pode ser
      automatizado
      Apache, Samba, Bind




                Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading
       Nenhuma linguagem carrega dados no banco, mais rapido que
       o proprio banco
       pg copy ( PostgreSQL ) , impdmp ( Oracle )
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco
       Limpeza de caracteres ’ ?’
       dupla dinamic ord - chr
           ord: descobre o ”id” do caracter estranho
           chr: recebe o ”id” do caracter e retorna o mesmo
           my $id estranho = ord(371);
           my $char estranho = chr($id estranho);
           my $texto sujo = s/$char estranho//g;
       Validar os dados de entrada ( CNPJ, CPF, etc )
       Business::BR::CNPJ Business::BR::CPF
                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading
       Nenhuma linguagem carrega dados no banco, mais rapido que
       o proprio banco
       pg copy ( PostgreSQL ) , impdmp ( Oracle )
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco
       Limpeza de caracteres ’ ?’
       dupla dinamic ord - chr
           ord: descobre o ”id” do caracter estranho
           chr: recebe o ”id” do caracter e retorna o mesmo
           my $id estranho = ord(371);
           my $char estranho = chr($id estranho);
           my $texto sujo = s/$char estranho//g;
       Validar os dados de entrada ( CNPJ, CPF, etc )
       Business::BR::CNPJ Business::BR::CPF
                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading
       Nenhuma linguagem carrega dados no banco, mais rapido que
       o proprio banco
       pg copy ( PostgreSQL ) , impdmp ( Oracle )
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco
       Limpeza de caracteres ’ ?’
       dupla dinamic ord - chr
           ord: descobre o ”id” do caracter estranho
           chr: recebe o ”id” do caracter e retorna o mesmo
           my $id estranho = ord(371);
           my $char estranho = chr($id estranho);
           my $texto sujo = s/$char estranho//g;
       Validar os dados de entrada ( CNPJ, CPF, etc )
       Business::BR::CNPJ Business::BR::CPF
                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading
       Nenhuma linguagem carrega dados no banco, mais rapido que
       o proprio banco
       pg copy ( PostgreSQL ) , impdmp ( Oracle )
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco
       Limpeza de caracteres ’ ?’
       dupla dinamic ord - chr
           ord: descobre o ”id” do caracter estranho
           chr: recebe o ”id” do caracter e retorna o mesmo
           my $id estranho = ord(371);
           my $char estranho = chr($id estranho);
           my $texto sujo = s/$char estranho//g;
       Validar os dados de entrada ( CNPJ, CPF, etc )
       Business::BR::CNPJ Business::BR::CPF
                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading
       Nenhuma linguagem carrega dados no banco, mais rapido que
       o proprio banco
       pg copy ( PostgreSQL ) , impdmp ( Oracle )
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco
       Limpeza de caracteres ’ ?’
       dupla dinamic ord - chr
           ord: descobre o ”id” do caracter estranho
           chr: recebe o ”id” do caracter e retorna o mesmo
           my $id estranho = ord(371);
           my $char estranho = chr($id estranho);
           my $texto sujo = s/$char estranho//g;
       Validar os dados de entrada ( CNPJ, CPF, etc )
       Business::BR::CNPJ Business::BR::CPF
                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading
       Nenhuma linguagem carrega dados no banco, mais rapido que
       o proprio banco
       pg copy ( PostgreSQL ) , impdmp ( Oracle )
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco
       Limpeza de caracteres ’ ?’
       dupla dinamic ord - chr
           ord: descobre o ”id” do caracter estranho
           chr: recebe o ”id” do caracter e retorna o mesmo
           my $id estranho = ord(371);
           my $char estranho = chr($id estranho);
           my $texto sujo = s/$char estranho//g;
       Validar os dados de entrada ( CNPJ, CPF, etc )
       Business::BR::CNPJ Business::BR::CPF
                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading
       Nenhuma linguagem carrega dados no banco, mais rapido que
       o proprio banco
       pg copy ( PostgreSQL ) , impdmp ( Oracle )
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco
       Limpeza de caracteres ’ ?’
       dupla dinamic ord - chr
           ord: descobre o ”id” do caracter estranho
           chr: recebe o ”id” do caracter e retorna o mesmo
           my $id estranho = ord(371);
           my $char estranho = chr($id estranho);
           my $texto sujo = s/$char estranho//g;
       Validar os dados de entrada ( CNPJ, CPF, etc )
       Business::BR::CNPJ Business::BR::CPF
                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading
       Nenhuma linguagem carrega dados no banco, mais rapido que
       o proprio banco
       pg copy ( PostgreSQL ) , impdmp ( Oracle )
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco
       Limpeza de caracteres ’ ?’
       dupla dinamic ord - chr
           ord: descobre o ”id” do caracter estranho
           chr: recebe o ”id” do caracter e retorna o mesmo
           my $id estranho = ord(371);
           my $char estranho = chr($id estranho);
           my $texto sujo = s/$char estranho//g;
       Validar os dados de entrada ( CNPJ, CPF, etc )
       Business::BR::CNPJ Business::BR::CPF
                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading
       Nenhuma linguagem carrega dados no banco, mais rapido que
       o proprio banco
       pg copy ( PostgreSQL ) , impdmp ( Oracle )
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco
       Limpeza de caracteres ’ ?’
       dupla dinamic ord - chr
           ord: descobre o ”id” do caracter estranho
           chr: recebe o ”id” do caracter e retorna o mesmo
           my $id estranho = ord(371);
           my $char estranho = chr($id estranho);
           my $texto sujo = s/$char estranho//g;
       Validar os dados de entrada ( CNPJ, CPF, etc )
       Business::BR::CNPJ Business::BR::CPF
                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading
       Nenhuma linguagem carrega dados no banco, mais rapido que
       o proprio banco
       pg copy ( PostgreSQL ) , impdmp ( Oracle )
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco
       Limpeza de caracteres ’ ?’
       dupla dinamic ord - chr
           ord: descobre o ”id” do caracter estranho
           chr: recebe o ”id” do caracter e retorna o mesmo
           my $id estranho = ord(371);
           my $char estranho = chr($id estranho);
           my $texto sujo = s/$char estranho//g;
       Validar os dados de entrada ( CNPJ, CPF, etc )
       Business::BR::CNPJ Business::BR::CPF
                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading
       Nenhuma linguagem carrega dados no banco, mais rapido que
       o proprio banco
       pg copy ( PostgreSQL ) , impdmp ( Oracle )
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco
       Limpeza de caracteres ’ ?’
       dupla dinamic ord - chr
           ord: descobre o ”id” do caracter estranho
           chr: recebe o ”id” do caracter e retorna o mesmo
           my $id estranho = ord(371);
           my $char estranho = chr($id estranho);
           my $texto sujo = s/$char estranho//g;
       Validar os dados de entrada ( CNPJ, CPF, etc )
       Business::BR::CNPJ Business::BR::CPF
                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading
       Nenhuma linguagem carrega dados no banco, mais rapido que
       o proprio banco
       pg copy ( PostgreSQL ) , impdmp ( Oracle )
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco
       Limpeza de caracteres ’ ?’
       dupla dinamic ord - chr
           ord: descobre o ”id” do caracter estranho
           chr: recebe o ”id” do caracter e retorna o mesmo
           my $id estranho = ord(371);
           my $char estranho = chr($id estranho);
           my $texto sujo = s/$char estranho//g;
       Validar os dados de entrada ( CNPJ, CPF, etc )
       Business::BR::CNPJ Business::BR::CPF
                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading




       Spreadsheet::Write tamb´m funciona bem com SELECT
                              e
       ... ou seja, n˜o precisa gerar um .csv e carregar no seu ”Excel”
                     a
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco




                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading




       Spreadsheet::Write tamb´m funciona bem com SELECT
                              e
       ... ou seja, n˜o precisa gerar um .csv e carregar no seu ”Excel”
                     a
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco




                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Extract, transform, loading




       Spreadsheet::Write tamb´m funciona bem com SELECT
                              e
       ... ou seja, n˜o precisa gerar um .csv e carregar no seu ”Excel”
                     a
       ..mas vocˆ pode modificar o que ser´ carregado antes de usar
                 e                       a
       o proprio banco




                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                      ca
                                 Sysadmin
                                     DBA
                      Considera¸˜es finais
                                co


Extract, transform, loading




       Pequel ETL




                Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                       ca
                                  Sysadmin
                                      DBA
                       Considera¸˜es finais
                                 co


PL/Perl - PL/PerlU




      Palesta do David Fetter ( http://fetter.org )




                 Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                       ca
                                  Sysadmin
                                      DBA
                       Considera¸˜es finais
                                 co


Data Cleaning




      Text::Levenshtein ( Edit Distance ou Levenshtein Distance )
          rato - ralo
          rodar - rodo
      Algorithm::LCS
      Algoritmo usado no diff de codigos




                 Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                       ca
                                  Sysadmin
                                      DBA
                       Considera¸˜es finais
                                 co


Data Cleaning




      Text::Levenshtein ( Edit Distance ou Levenshtein Distance )
          rato - ralo
          rodar - rodo
      Algorithm::LCS
      Algoritmo usado no diff de codigos




                 Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                       ca
                                  Sysadmin
                                      DBA
                       Considera¸˜es finais
                                 co


Data Cleaning




      Text::Levenshtein ( Edit Distance ou Levenshtein Distance )
          rato - ralo
          rodar - rodo
      Algorithm::LCS
      Algoritmo usado no diff de codigos




                 Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                       ca
                                  Sysadmin
                                      DBA
                       Considera¸˜es finais
                                 co


Data Cleaning




      Text::Levenshtein ( Edit Distance ou Levenshtein Distance )
          rato - ralo
          rodar - rodo
      Algorithm::LCS
      Algoritmo usado no diff de codigos




                 Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                       ca
                                  Sysadmin
                                      DBA
                       Considera¸˜es finais
                                 co


Data Cleaning




      Text::Levenshtein ( Edit Distance ou Levenshtein Distance )
          rato - ralo
          rodar - rodo
      Algorithm::LCS
      Algoritmo usado no diff de codigos




                 Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Bibliografia e coisas interessantes




   Cultured Perl: Automating UNIX system administration with Perl
   Cultured Perl: One-liners 101
   Sending Apache httpd Logs to Syslog
   http://www.lornlab.org/ palestra yapc2009/




                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Obrigado




      Duvidas?
      lorn at lornlab dot org




                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s
Introdu¸˜o
                                        ca
                                   Sysadmin
                                       DBA
                        Considera¸˜es finais
                                  co


Obrigado




      Duvidas?
      lorn at lornlab dot org




                  Lindolfo ”Lorn” Rodrigues   Perl para Sysadmins e DBA’s

Contenu connexe

En vedette

Juguem amb dites
Juguem amb ditesJuguem amb dites
Juguem amb ditesNeus
 
Desafios da Expansão da Produção Mineral na Bahia
Desafios da Expansão da Produção Mineral na BahiaDesafios da Expansão da Produção Mineral na Bahia
Desafios da Expansão da Produção Mineral na BahiaRomeu Temporal
 
Haur hezkuntzako programa ezberdinak
Haur hezkuntzako programa ezberdinakHaur hezkuntzako programa ezberdinak
Haur hezkuntzako programa ezberdinakainarababarro
 
Interment of pacita tamondong at Holy Gardens Pangasinan Memorial Park
Interment of pacita tamondong at Holy Gardens Pangasinan Memorial ParkInterment of pacita tamondong at Holy Gardens Pangasinan Memorial Park
Interment of pacita tamondong at Holy Gardens Pangasinan Memorial ParkHoly Gardens Memorial Park
 
2_Tarefa_TeresaMaia
2_Tarefa_TeresaMaia2_Tarefa_TeresaMaia
2_Tarefa_TeresaMaiaTeresa Maia
 
Sojung proposal
Sojung proposalSojung proposal
Sojung proposalsojeanne
 
Examen presentacion angel oses
Examen presentacion angel osesExamen presentacion angel oses
Examen presentacion angel osessandia13
 
Material de apoyo clase 2 mrkt
Material de apoyo clase 2 mrktMaterial de apoyo clase 2 mrkt
Material de apoyo clase 2 mrktJavier Juliac
 
I CEFET Coding Dojo - Divulgação
I CEFET Coding Dojo - DivulgaçãoI CEFET Coding Dojo - Divulgação
I CEFET Coding Dojo - Divulgaçãothiagodp
 
King Portfolio
King PortfolioKing Portfolio
King PortfolioTiana King
 

En vedette (19)

Juguem amb dites
Juguem amb ditesJuguem amb dites
Juguem amb dites
 
Booklet
BookletBooklet
Booklet
 
Desafios da Expansão da Produção Mineral na Bahia
Desafios da Expansão da Produção Mineral na BahiaDesafios da Expansão da Produção Mineral na Bahia
Desafios da Expansão da Produção Mineral na Bahia
 
Haur hezkuntzako programa ezberdinak
Haur hezkuntzako programa ezberdinakHaur hezkuntzako programa ezberdinak
Haur hezkuntzako programa ezberdinak
 
Interment of pacita tamondong at Holy Gardens Pangasinan Memorial Park
Interment of pacita tamondong at Holy Gardens Pangasinan Memorial ParkInterment of pacita tamondong at Holy Gardens Pangasinan Memorial Park
Interment of pacita tamondong at Holy Gardens Pangasinan Memorial Park
 
2_Tarefa_TeresaMaia
2_Tarefa_TeresaMaia2_Tarefa_TeresaMaia
2_Tarefa_TeresaMaia
 
Sojung proposal
Sojung proposalSojung proposal
Sojung proposal
 
Examen presentacion angel oses
Examen presentacion angel osesExamen presentacion angel oses
Examen presentacion angel oses
 
Webquest "O clima de Galicia"
Webquest "O clima de Galicia"Webquest "O clima de Galicia"
Webquest "O clima de Galicia"
 
Material de apoyo clase 2 mrkt
Material de apoyo clase 2 mrktMaterial de apoyo clase 2 mrkt
Material de apoyo clase 2 mrkt
 
Argiñe
ArgiñeArgiñe
Argiñe
 
I CEFET Coding Dojo - Divulgação
I CEFET Coding Dojo - DivulgaçãoI CEFET Coding Dojo - Divulgação
I CEFET Coding Dojo - Divulgação
 
Adventure sports
Adventure sportsAdventure sports
Adventure sports
 
Culinaria Japonesa
Culinaria JaponesaCulinaria Japonesa
Culinaria Japonesa
 
Champion Studios
Champion StudiosChampion Studios
Champion Studios
 
Slide 1 Columna
Slide 1 ColumnaSlide 1 Columna
Slide 1 Columna
 
Excchange Cristina and Maddie
Excchange Cristina and MaddieExcchange Cristina and Maddie
Excchange Cristina and Maddie
 
A linguagem da saúde
A linguagem da saúde  A linguagem da saúde
A linguagem da saúde
 
King Portfolio
King PortfolioKing Portfolio
King Portfolio
 

perl sysadmin dba

  • 1. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Perl para Sysadmins e DBA’s Lindolfo ”Lorn” Rodrigues Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 2. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co $ whoami $ id $ uid=1000(lorn) gid=100(users) grupos=11(#sao-paulo.pm), 17(#slackware-br), 18(#catalyst), 19(#moose),83(#perl6) Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 3. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Agenda Sysadmin One-liners Parsers de log Automatiza¸˜es co DBA ETL Data Cleaning Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 4. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Agenda Sysadmin One-liners Parsers de log Automatiza¸˜es co DBA ETL Data Cleaning Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 5. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Agenda Sysadmin One-liners Parsers de log Automatiza¸˜es co DBA ETL Data Cleaning Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 6. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Agenda Sysadmin One-liners Parsers de log Automatiza¸˜es co DBA ETL Data Cleaning Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 7. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Agenda Sysadmin One-liners Parsers de log Automatiza¸˜es co DBA ETL Data Cleaning Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 8. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Agenda Sysadmin One-liners Parsers de log Automatiza¸˜es co DBA ETL Data Cleaning Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 9. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Agenda Sysadmin One-liners Parsers de log Automatiza¸˜es co DBA ETL Data Cleaning Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 10. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners Perl na linha de comando Lembra muito sed/awk, com todo o poder da PCRE sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt awk: awk ’{print $1;}’ arquivo.txt perl: perl -npe ’print $F[0]’ arquivo.txt Perl = Shell Script + awk + sed + ... + CPAN! o/ Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 11. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners Perl na linha de comando Lembra muito sed/awk, com todo o poder da PCRE sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt awk: awk ’{print $1;}’ arquivo.txt perl: perl -npe ’print $F[0]’ arquivo.txt Perl = Shell Script + awk + sed + ... + CPAN! o/ Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 12. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners Perl na linha de comando Lembra muito sed/awk, com todo o poder da PCRE sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt awk: awk ’{print $1;}’ arquivo.txt perl: perl -npe ’print $F[0]’ arquivo.txt Perl = Shell Script + awk + sed + ... + CPAN! o/ Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 13. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners Perl na linha de comando Lembra muito sed/awk, com todo o poder da PCRE sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt awk: awk ’{print $1;}’ arquivo.txt perl: perl -npe ’print $F[0]’ arquivo.txt Perl = Shell Script + awk + sed + ... + CPAN! o/ Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 14. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners Perl na linha de comando Lembra muito sed/awk, com todo o poder da PCRE sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt awk: awk ’{print $1;}’ arquivo.txt perl: perl -npe ’print $F[0]’ arquivo.txt Perl = Shell Script + awk + sed + ... + CPAN! o/ Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 15. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners Perl na linha de comando Lembra muito sed/awk, com todo o poder da PCRE sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt awk: awk ’{print $1;}’ arquivo.txt perl: perl -npe ’print $F[0]’ arquivo.txt Perl = Shell Script + awk + sed + ... + CPAN! o/ Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 16. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners Perl na linha de comando Lembra muito sed/awk, com todo o poder da PCRE sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt awk: awk ’{print $1;}’ arquivo.txt perl: perl -npe ’print $F[0]’ arquivo.txt Perl = Shell Script + awk + sed + ... + CPAN! o/ Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 17. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners find /var/www -iname ”*.html-exec perl -i.bck -npe ’s/foo/bar/g’ ’’ perl -MDBD::mysql -e ’DBD::mysql-¿connect(’dbname=yapc;Host=192.168.1.2’, ’root’, ’yapc2009’) Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 18. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners find /var/www -iname ”*.html-exec perl -i.bck -npe ’s/foo/bar/g’ ’’ perl -MDBD::mysql -e ’DBD::mysql-¿connect(’dbname=yapc;Host=192.168.1.2’, ’root’, ’yapc2009’) Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 19. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners dicas.txt ( canivete sui¸o one-liners ) c App::Rad! Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 20. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners dicas.txt ( canivete sui¸o one-liners ) c App::Rad! Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 21. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners 1 u s e App : : Rad ' i n c l u d e ' ; 2 App : : Rad−>run ; Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 22. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners $ perl dicas.pl include ’arruma string’ -i.bck -npe ’s/foo/bar/g’ arquivo.txt $ perl dicas.pl 1 Usage : dicas . pl command [ arguments ] 2 3 Available Commands : 4 arruma_string 5 help show syntax and available commands 6 include include one−liner as a command $ perl dicas.pl arruma string outro arquivo.txt Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 23. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners $ perl dicas.pl include ’arruma string’ -i.bck -npe ’s/foo/bar/g’ arquivo.txt $ perl dicas.pl 1 Usage : dicas . pl command [ arguments ] 2 3 Available Commands : 4 arruma_string 5 help show syntax and available commands 6 include include one−liner as a command $ perl dicas.pl arruma string outro arquivo.txt Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 24. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners $ perl dicas.pl include ’arruma string’ -i.bck -npe ’s/foo/bar/g’ arquivo.txt $ perl dicas.pl 1 Usage : dicas . pl command [ arguments ] 2 3 Available Commands : 4 arruma_string 5 help show syntax and available commands 6 include include one−liner as a command $ perl dicas.pl arruma string outro arquivo.txt Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 25. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co One-liners Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 26. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Parsers Como mandar o log do Apache para o Syslog ( tutorial no ultimo slide ) PABX Usar Spreadsheet::Write Customizar com cores, gerentes/chefes adoram cores maillog Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 27. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Parsers Como mandar o log do Apache para o Syslog ( tutorial no ultimo slide ) PABX Usar Spreadsheet::Write Customizar com cores, gerentes/chefes adoram cores maillog Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 28. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Parsers Como mandar o log do Apache para o Syslog ( tutorial no ultimo slide ) PABX Usar Spreadsheet::Write Customizar com cores, gerentes/chefes adoram cores maillog Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 29. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Parsers Como mandar o log do Apache para o Syslog ( tutorial no ultimo slide ) PABX Usar Spreadsheet::Write Customizar com cores, gerentes/chefes adoram cores maillog Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 30. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Parsers Como mandar o log do Apache para o Syslog ( tutorial no ultimo slide ) PABX Usar Spreadsheet::Write Customizar com cores, gerentes/chefes adoram cores maillog Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 31. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Pr´-requisitos e Hash tables, o que s˜o e como pode ser usada? a 1 my %idade = ( 2 ” r a u l s e i x a s ” => 1 0 0 0 0 , 3 ” a r t h u r d e n t ” => 42 4 ); 5 p r i n t $ idade { ' a r t h u r d e n t ' } ; 6 # a d i c i o n a n d o i t e n s ao h a s h 7 $ idade { ” j e r e m i a s ” }=27; 8 # deletando itens 9 d e l e t e ( $ idade { ' r a u l s e i x a s ' } ) ; Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 32. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Pr´-requisitos e Estrutura de um hash: 1 $ VAR1 = { 2 ' j e r e m i a s ' => 2 7 , 3 ' a r t h u r d e n t ' => 4 2 , 4 ' r a u l s e i x a s ' => −10000 5 }; Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 33. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Pega ”spider” Pegando o ”invasor” do seu site 1 w h i l e (my $ line = <STDIN >) { 2 my ( $ ip ) = s p l i t ( / s / , $ line ) ; 3 $ hash_count { $ ip } = $ hash_count { $ ip } + 1 ; 4 } 5 6 p r i n t Dumper %hash_count ; 7 f o r e a c h my $ line ( s o r t { $ hash_count { $ b } <=> $ hash_count {← $a } } k e y s 8 %hash_count ) { 9 my $ acessos = $ hash_count { $ line } ; 10 p r i n t ” i p : $ l i n e t a c e s s o s : t $ a c e s s o s n” ; 11 } Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 34. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Pega ”spider” 1 $ VAR1 = { 2 ' 1 2 8 . 9 8 . 1 2 0 . 8 4 ' => 2 , 3 ' 3 8 . 9 8 . 1 2 0 . 8 4 ' => 6 , 4 ' 1 1 8 . 9 8 . 1 2 0 . 8 4 ' => ' 1 ' 5 }; 6 ip : 3 8 . 9 8 . 1 2 0 . 8 4 acessos : 6 7 ip : 1 2 8 . 9 8 . 1 2 0 . 8 4 acessos : 2 8 ip : 1 1 8 . 9 8 . 1 2 0 . 8 4 acessos : 1 Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 35. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Achando arquivo duplicados 1 my @targets = ( ' /home/ l o r n / f o o / ' ) ; 2 my $ tree = File : : Find : : Object−>new ( { } , @targets ) ; 3 my %hash_file = ( ) ; 4 my $ md5 = Digest : : MD5−>new ; 5 w h i l e (my $ r = $ tree−>n e x t ( ) ) { 6 i f ( −d $ r ) { 7 next ; 8 } 9 open (my $ file , '< ' , $ r ) or d i e ” $ ! n” ; 10 $ md5−>addfile ( $ file ) ; 11 my $ digest = $ md5−>hexdigest ; 12 c l o s e $ file ; 13 my @files = ( $ r ) ; 14 pu sh ( @ { $ hash_file { $ digest } } , $ r ) ; 15 } Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 36. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Achando arquivo duplicados 1 f o r e a c h my $ md5hex ( s o r t { $ hash_file { $ a } <=> $ hash_file {← $b } } k e y s 2 %hash_file ) { 3 i f ( s c a l a r ( @ { $ hash_file { $ md5hex } } ) > 1 ) { 4 p r i n t ” A r q u i v o d u p l i c a d o ! n” ; 5 f o r e a c h my $ file ( @ { $ hash_file { $ md5hex } } ) { 6 p r i n t ” f i l e : $ f i l e n” ; 7 } 8 } 9 } Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 37. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Achando arquivo duplicados 1 $ VAR1 = { 2 ' 4 b 1 a 7 8 5 a 1 d d 6 d b 7 b 5 e 4 f 8 6 c 7 e 5 6 c 2 d 1 d ' => 3 [ 4 '/ Users / lo r n / foo / arquivo2 . txt ' , 5 '/ Users / lo r n / foo / arquivo23 . txt ' 6 ], 7 8 ' 3789 f a 4 8 9 8 d 7 b 7 f 1 5 1 3 c 8 a d 3 9 6 5 c 3 f 9 a ' => 9 [ 10 '/ Users / lo r n / foo / arquivo1 . txt ' , 11 '/ Users / lo r n / foo / arquivo11 . txt ' , 12 ' / U s e r s / l o r n / f o o /tmp/ a r q u i v o 4 2 . t x t ' 13 ] 14 }; Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 38. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Automatizando tarefas Qualquer programa com opcao de include, pode ser automatizado Apache, Samba, Bind Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 39. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Automatizando tarefas Qualquer programa com opcao de include, pode ser automatizado Apache, Samba, Bind Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 40. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Nenhuma linguagem carrega dados no banco, mais rapido que o proprio banco pg copy ( PostgreSQL ) , impdmp ( Oracle ) ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Limpeza de caracteres ’ ?’ dupla dinamic ord - chr ord: descobre o ”id” do caracter estranho chr: recebe o ”id” do caracter e retorna o mesmo my $id estranho = ord(371); my $char estranho = chr($id estranho); my $texto sujo = s/$char estranho//g; Validar os dados de entrada ( CNPJ, CPF, etc ) Business::BR::CNPJ Business::BR::CPF Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 41. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Nenhuma linguagem carrega dados no banco, mais rapido que o proprio banco pg copy ( PostgreSQL ) , impdmp ( Oracle ) ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Limpeza de caracteres ’ ?’ dupla dinamic ord - chr ord: descobre o ”id” do caracter estranho chr: recebe o ”id” do caracter e retorna o mesmo my $id estranho = ord(371); my $char estranho = chr($id estranho); my $texto sujo = s/$char estranho//g; Validar os dados de entrada ( CNPJ, CPF, etc ) Business::BR::CNPJ Business::BR::CPF Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 42. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Nenhuma linguagem carrega dados no banco, mais rapido que o proprio banco pg copy ( PostgreSQL ) , impdmp ( Oracle ) ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Limpeza de caracteres ’ ?’ dupla dinamic ord - chr ord: descobre o ”id” do caracter estranho chr: recebe o ”id” do caracter e retorna o mesmo my $id estranho = ord(371); my $char estranho = chr($id estranho); my $texto sujo = s/$char estranho//g; Validar os dados de entrada ( CNPJ, CPF, etc ) Business::BR::CNPJ Business::BR::CPF Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 43. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Nenhuma linguagem carrega dados no banco, mais rapido que o proprio banco pg copy ( PostgreSQL ) , impdmp ( Oracle ) ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Limpeza de caracteres ’ ?’ dupla dinamic ord - chr ord: descobre o ”id” do caracter estranho chr: recebe o ”id” do caracter e retorna o mesmo my $id estranho = ord(371); my $char estranho = chr($id estranho); my $texto sujo = s/$char estranho//g; Validar os dados de entrada ( CNPJ, CPF, etc ) Business::BR::CNPJ Business::BR::CPF Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 44. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Nenhuma linguagem carrega dados no banco, mais rapido que o proprio banco pg copy ( PostgreSQL ) , impdmp ( Oracle ) ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Limpeza de caracteres ’ ?’ dupla dinamic ord - chr ord: descobre o ”id” do caracter estranho chr: recebe o ”id” do caracter e retorna o mesmo my $id estranho = ord(371); my $char estranho = chr($id estranho); my $texto sujo = s/$char estranho//g; Validar os dados de entrada ( CNPJ, CPF, etc ) Business::BR::CNPJ Business::BR::CPF Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 45. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Nenhuma linguagem carrega dados no banco, mais rapido que o proprio banco pg copy ( PostgreSQL ) , impdmp ( Oracle ) ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Limpeza de caracteres ’ ?’ dupla dinamic ord - chr ord: descobre o ”id” do caracter estranho chr: recebe o ”id” do caracter e retorna o mesmo my $id estranho = ord(371); my $char estranho = chr($id estranho); my $texto sujo = s/$char estranho//g; Validar os dados de entrada ( CNPJ, CPF, etc ) Business::BR::CNPJ Business::BR::CPF Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 46. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Nenhuma linguagem carrega dados no banco, mais rapido que o proprio banco pg copy ( PostgreSQL ) , impdmp ( Oracle ) ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Limpeza de caracteres ’ ?’ dupla dinamic ord - chr ord: descobre o ”id” do caracter estranho chr: recebe o ”id” do caracter e retorna o mesmo my $id estranho = ord(371); my $char estranho = chr($id estranho); my $texto sujo = s/$char estranho//g; Validar os dados de entrada ( CNPJ, CPF, etc ) Business::BR::CNPJ Business::BR::CPF Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 47. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Nenhuma linguagem carrega dados no banco, mais rapido que o proprio banco pg copy ( PostgreSQL ) , impdmp ( Oracle ) ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Limpeza de caracteres ’ ?’ dupla dinamic ord - chr ord: descobre o ”id” do caracter estranho chr: recebe o ”id” do caracter e retorna o mesmo my $id estranho = ord(371); my $char estranho = chr($id estranho); my $texto sujo = s/$char estranho//g; Validar os dados de entrada ( CNPJ, CPF, etc ) Business::BR::CNPJ Business::BR::CPF Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 48. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Nenhuma linguagem carrega dados no banco, mais rapido que o proprio banco pg copy ( PostgreSQL ) , impdmp ( Oracle ) ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Limpeza de caracteres ’ ?’ dupla dinamic ord - chr ord: descobre o ”id” do caracter estranho chr: recebe o ”id” do caracter e retorna o mesmo my $id estranho = ord(371); my $char estranho = chr($id estranho); my $texto sujo = s/$char estranho//g; Validar os dados de entrada ( CNPJ, CPF, etc ) Business::BR::CNPJ Business::BR::CPF Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 49. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Nenhuma linguagem carrega dados no banco, mais rapido que o proprio banco pg copy ( PostgreSQL ) , impdmp ( Oracle ) ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Limpeza de caracteres ’ ?’ dupla dinamic ord - chr ord: descobre o ”id” do caracter estranho chr: recebe o ”id” do caracter e retorna o mesmo my $id estranho = ord(371); my $char estranho = chr($id estranho); my $texto sujo = s/$char estranho//g; Validar os dados de entrada ( CNPJ, CPF, etc ) Business::BR::CNPJ Business::BR::CPF Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 50. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Nenhuma linguagem carrega dados no banco, mais rapido que o proprio banco pg copy ( PostgreSQL ) , impdmp ( Oracle ) ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Limpeza de caracteres ’ ?’ dupla dinamic ord - chr ord: descobre o ”id” do caracter estranho chr: recebe o ”id” do caracter e retorna o mesmo my $id estranho = ord(371); my $char estranho = chr($id estranho); my $texto sujo = s/$char estranho//g; Validar os dados de entrada ( CNPJ, CPF, etc ) Business::BR::CNPJ Business::BR::CPF Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 51. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Nenhuma linguagem carrega dados no banco, mais rapido que o proprio banco pg copy ( PostgreSQL ) , impdmp ( Oracle ) ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Limpeza de caracteres ’ ?’ dupla dinamic ord - chr ord: descobre o ”id” do caracter estranho chr: recebe o ”id” do caracter e retorna o mesmo my $id estranho = ord(371); my $char estranho = chr($id estranho); my $texto sujo = s/$char estranho//g; Validar os dados de entrada ( CNPJ, CPF, etc ) Business::BR::CNPJ Business::BR::CPF Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 52. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Spreadsheet::Write tamb´m funciona bem com SELECT e ... ou seja, n˜o precisa gerar um .csv e carregar no seu ”Excel” a ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 53. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Spreadsheet::Write tamb´m funciona bem com SELECT e ... ou seja, n˜o precisa gerar um .csv e carregar no seu ”Excel” a ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 54. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Spreadsheet::Write tamb´m funciona bem com SELECT e ... ou seja, n˜o precisa gerar um .csv e carregar no seu ”Excel” a ..mas vocˆ pode modificar o que ser´ carregado antes de usar e a o proprio banco Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 55. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Extract, transform, loading Pequel ETL Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 56. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co PL/Perl - PL/PerlU Palesta do David Fetter ( http://fetter.org ) Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 57. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Data Cleaning Text::Levenshtein ( Edit Distance ou Levenshtein Distance ) rato - ralo rodar - rodo Algorithm::LCS Algoritmo usado no diff de codigos Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 58. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Data Cleaning Text::Levenshtein ( Edit Distance ou Levenshtein Distance ) rato - ralo rodar - rodo Algorithm::LCS Algoritmo usado no diff de codigos Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 59. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Data Cleaning Text::Levenshtein ( Edit Distance ou Levenshtein Distance ) rato - ralo rodar - rodo Algorithm::LCS Algoritmo usado no diff de codigos Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 60. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Data Cleaning Text::Levenshtein ( Edit Distance ou Levenshtein Distance ) rato - ralo rodar - rodo Algorithm::LCS Algoritmo usado no diff de codigos Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 61. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Data Cleaning Text::Levenshtein ( Edit Distance ou Levenshtein Distance ) rato - ralo rodar - rodo Algorithm::LCS Algoritmo usado no diff de codigos Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 62. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Bibliografia e coisas interessantes Cultured Perl: Automating UNIX system administration with Perl Cultured Perl: One-liners 101 Sending Apache httpd Logs to Syslog http://www.lornlab.org/ palestra yapc2009/ Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 63. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Obrigado Duvidas? lorn at lornlab dot org Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
  • 64. Introdu¸˜o ca Sysadmin DBA Considera¸˜es finais co Obrigado Duvidas? lorn at lornlab dot org Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s