perl sysadmin dba

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
1 of 64

Recommended

A busca pelo deploy continuo by
A busca pelo deploy continuoA busca pelo deploy continuo
A busca pelo deploy continuoLindolfo Rodrigues Oliveira Neto
3.7K views50 slides
Suite de Testes by
Suite de TestesSuite de Testes
Suite de TestesLindolfo Rodrigues Oliveira Neto
1.4K views13 slides
Dolz,sosa y garcia by
Dolz,sosa y garciaDolz,sosa y garcia
Dolz,sosa y garcialulimicky
177 views10 slides
English exchange Georgia and Mireia by
English exchange Georgia and MireiaEnglish exchange Georgia and Mireia
English exchange Georgia and Mireiaesthertorresplanas
191 views8 slides
Verissimo by
VerissimoVerissimo
Verissimoamendowin
188 views51 slides
Alba mas morales by
Alba mas moralesAlba mas morales
Alba mas moralesCRP del Tarragonès
615 views15 slides

More Related Content

Viewers also liked

Juguem amb dites by
Juguem amb ditesJuguem amb dites
Juguem amb ditesNeus
329 views14 slides
Booklet by
BookletBooklet
Bookletevil8baller
216 views6 slides
Desafios da Expansão da Produção Mineral na Bahia by
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
713 views28 slides
Haur hezkuntzako programa ezberdinak by
Haur hezkuntzako programa ezberdinakHaur hezkuntzako programa ezberdinak
Haur hezkuntzako programa ezberdinakainarababarro
219 views6 slides
Interment of pacita tamondong at Holy Gardens Pangasinan Memorial Park by
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
158 views15 slides
2_Tarefa_TeresaMaia by
2_Tarefa_TeresaMaia2_Tarefa_TeresaMaia
2_Tarefa_TeresaMaiaTeresa Maia
239 views6 slides

Viewers also liked(19)

Juguem amb dites by Neus
Juguem amb ditesJuguem amb dites
Juguem amb dites
Neus329 views
Desafios da Expansão da Produção Mineral na Bahia by Romeu Temporal
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
Romeu Temporal713 views
Haur hezkuntzako programa ezberdinak by ainarababarro
Haur hezkuntzako programa ezberdinakHaur hezkuntzako programa ezberdinak
Haur hezkuntzako programa ezberdinak
ainarababarro219 views
2_Tarefa_TeresaMaia by Teresa Maia
2_Tarefa_TeresaMaia2_Tarefa_TeresaMaia
2_Tarefa_TeresaMaia
Teresa Maia239 views
Sojung proposal by sojeanne
Sojung proposalSojung proposal
Sojung proposal
sojeanne108 views
Examen presentacion angel oses by sandia13
Examen presentacion angel osesExamen presentacion angel oses
Examen presentacion angel oses
sandia13192 views
Material de apoyo clase 2 mrkt by Javier Juliac
Material de apoyo clase 2 mrktMaterial de apoyo clase 2 mrkt
Material de apoyo clase 2 mrkt
Javier Juliac293 views
I CEFET Coding Dojo - Divulgação by thiagodp
I CEFET Coding Dojo - DivulgaçãoI CEFET Coding Dojo - Divulgação
I CEFET Coding Dojo - Divulgação
thiagodp359 views
King Portfolio by Tiana King
King PortfolioKing Portfolio
King Portfolio
Tiana King320 views

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