SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011




            ${CLI}
Sobrevivendo na Linha de Comando


           Leandro Martelli
        martelli@tawala.com.br
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Por que a linha de comando?
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Por que a linha de comando?

- velocidade.
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Por que a linha de comando?

- velocidade.

- acesso remoto.
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Por que a linha de comando?

- velocidade.

- acesso remoto.

- flexibilidade.
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Por que a linha de comando?

- velocidade.

- acesso remoto.

- flexibilidade.

- poder!
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Shell 101:

  - interface entre usuário e sistema.
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Shell 101:

  - interface entre usuário e sistema.

  - interpretação de comandos.
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Shell 101:

  - interface entre usuário e sistema.

  - interpretação de comandos.

  - exemplos de shell:
     * bash
     * tcsh
     * ksh
     * zsh
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Shell 101:

  - interface entre usuário e sistema.

  - interpretação de comandos.

  - exemplos de shell:
     * bash
     * tcsh
     * zsh
     * ksh (Greg Sullivan, MPM)
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Acessando o Sistema:

  - local:
       * xterm (Linux)
       * gnome-terminal (Linux)
       * iTerm (Mac)
       * cmd (Windows)
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Acessando o Sistema:

  - local:
       * xterm (Linux)
       * gnome-terminal (Linux)
       * iTerm (Mac)
       * cmd (Windows) ??????????
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Acessando o Sistema:

  - local:
       * xterm (Linux)
       * gnome-terminal (Linux)
       * iTerm (Mac)
       * cmd (Windows) ??????????

  - remoto:
       * PuTTY (Windows)
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Acessando um Sistema Remoto:
$ ssh martelli@srv.tawala.com.br -p 23514
martelli@srv.tawala.com.br's password:
Last login: Thu Nov 10 00:44:48 2011 from 201.222.4.136
[martelli@srv ~]$
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Acessando um Sistema Remoto:
$ ssh martelli@srv.tawala.com.br -p 23514
martelli@srv.tawala.com.br's password:
Last login: Thu Nov 10 00:44:48 2011 from 201.222.4.136
[martelli@srv ~]$


Versão Preguiçosa:
$ ssh servidor
Last login: Thu Nov 10 00:45:34 2011 from 201.222.4.136
[martelli@srv ~]$
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Acessando um Sistema Remoto:
$ ssh martelli@srv.tawala.com.br -p 23514
martelli@srv.tawala.com.br's password:
Last login: Thu Nov 10 00:44:48 2011 from 201.222.4.136
[martelli@srv ~]$


Versão Preguiçosa:
$ ssh servidor
Last login: Thu Nov 10 00:45:34 2011 from 201.222.4.136
[martelli@srv ~]$



                 ???
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Passo [1] - arquivo .ssh/config:
Host servidor
   HostName srv.tawala.com.br
   User martelli
   Port 23514
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Passo [1] - arquivo .ssh/config:
Host servidor
   HostName srv.tawala.com.br
   User martelli
   Port 23514



Editando sem editor:
$ cat > ~/.ssh/config << FIM
Host servidor
    HostName srv.tawala.com.br
    User martelli
    Port 23514
FIM
$
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Passo [2] - Autenticação por chave pública:
$ ssh-keygen -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key
(/home/teste/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in
/home/teste/.ssh/id_rsa.
Your public key has been saved in ...


$ ssh-copy-id -i ~/.ssh/id_rsa servidor
martelli@srv's password:
Now try logging into the machine, with "ssh 'servidor'",
and check in:

 .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't
expecting.
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Editando sem editor[2] - perl:
$   for i in 1 2 3
>   do
>   echo 'text errado' > f${i}
>   done

$ cat f*
text errado
text errado
text errado

$
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Editando sem editor[2] - perl:
$   for i in 1 2 3
>   do
>   echo 'text errado' > f${i}
>   done

$ cat f*
text errado
text errado
text errado

$ perl -i -pe 's/ errado/o certo/' f{1,3}
$
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Editando sem editor[2] - perl:
$   for i in 1 2 3
>   do
>   echo 'text errado' > f${i}
>   done

$ cat f*
text errado
text errado
text errado

$ perl -i -pe 's/ errado/o certo/' f{1,3}
$ cat f*
texto certo
text errado
texto certo
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Navegando por diretórios - pushd/popd:
$ pwd
/tmp/scti2011
$ find .
.
./a
./a/b
./a/b/c
./a/d
./a/d/e
./a/f
./a/f/g
$ pushd .
$ cd /Users/martelli
$ cd tmp
$ pwd
/Users/martelli/tmp
$ popd
/tmp/scti2011
$ pwd
/tmp/scti2011
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Navegando por diretórios[2] - cdspell:
$ cd /tpm/stci2011
-bash: cd: /tpm/stci2011: No such file or directory
$
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Navegando por diretórios[2] - cdspell:
$ cd /tpm/stci2011
-bash: cd: /tpm/stci2011: No such file or directory
$ shopt -s cdspell
$
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Navegando por diretórios[2] - cdspell:
$ cd /tpm/stci2011
-bash: cd: /tpm/stci2011: No such file or directory
$ shopt -s cdspell
$ cd /tpm/stci2011
/tmp/scti2011
$ pwd
/tmp/scti2011
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Shell multi-tarefa - jobs/fg/bg:
$ vi demo.txt
^Z
[1]+ Stopped                   vi demo.txt
$ vi demoNovo.txt
^Z
[2]+ Stopped                   vi demoNovo.txt
$ find / > lista.txt 2>&1
^Z
[3]+ Stopped                   find / > lista.txt
$ jobs
[1]    Stopped                 vi demo.txt
[2]- Stopped                   vi demoNovo.txt
[3]+ Stopped                   find / > lista.txt
$ bg 3
[3]+ find / > lista.txt 2>&1 &
$ fg 1
(de volta ao arquivo demo.txt)
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Criando comandos - function:
$ $ function demo() {
> echo "a: $1"
> echo "b: $2"
> echo "c: $3"
> }
$ demo primeiro segundo terceiro
a: primeiro
b: segundo
c: terceiro
$
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Shell Scripts:
“shabang”: #!/bin/bash

$ cat > demo.sh <<FIM
#!/bin/bash
MSG=$1
for ((i=0;i<10;i=$i+1))
do
    echo $i: $MSG
done
FIM
$ chmod +x demo.sh
$ ./demo.sh “Olá Mundo”
0: Olá Mundo
1: Olá Mundo
2: Olá Mundo
3: Olá Mundo
4: Olá Mundo
...
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Shell Scripts - depuração:
$ bash -x ./demo.sh 'Olá Mundo'
+ MSG='Olá Mundo'
+ (( i=0 ))
+ (( i<10 ))
+ echo 0: Olá Mundo
0: Olá Mundo
+ (( i=0+1 ))
+ (( i<10 ))
+ echo 1: Olá Mundo
1: Olá Mundo
+ (( i=1+1 ))
+ (( i<10 ))
+ echo 2: Olá Mundo
2: Olá Mundo
+ (( i=2+1 ))
+ (( i<10 ))
+ echo 3: Olá Mundo
...
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Terminais Múltiplos - screen:
$ screen -S demo
CTRL+a-d
[detached]
neutrino:scti2011 martelli$ screen -ls
There is a screen on:
   462.demo (Detached)
1 Socket in
/var/folders/gt/kqs2wvxd4yl7kfdm6x_b9rph0000gn/T/.screen.
$ screen -x demo
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Comandos amigos do dia-a-dia:

- awk
- sed
- sort
- uniq
- grep / egrep
- bc
- xargs
- tr
- curl
falta algo...
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Comandos amigos do dia-a-dia:

- awk
- sed
- sort
- uniq
- grep / egrep
- bc
- xargs
- tr
- curl
Não esqueçamos o pipe:              |
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011



Hands-on:

- screen (para os vários exemplos)
- bash -x
- netstat
- meetings.log
- /proc - file descriptors
- bash: $() $? - script com “quiet grep”
- tunneling com SSH
- openssl
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011




    Obrigado!

Leandro Martelli
martelli@tawala.com.br
 www.tawala.com.br

Mais conteúdo relacionado

Mais procurados

Proxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesProxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesStanislaw Pusep
 
Sobrecarga e invocação de métodos - Preparatório Certificação - OCAJP7 - Aula...
Sobrecarga e invocação de métodos - Preparatório Certificação - OCAJP7 - Aula...Sobrecarga e invocação de métodos - Preparatório Certificação - OCAJP7 - Aula...
Sobrecarga e invocação de métodos - Preparatório Certificação - OCAJP7 - Aula...Paulo Henrique Lerbach Rodrigues
 
Bash, o poder da linha de comando! - Tchelinux.org 2017
Bash, o poder da linha de comando! - Tchelinux.org 2017Bash, o poder da linha de comando! - Tchelinux.org 2017
Bash, o poder da linha de comando! - Tchelinux.org 2017Sandro Custodio
 
Shell Script - Controle de fluxo
Shell Script - Controle de fluxoShell Script - Controle de fluxo
Shell Script - Controle de fluxoFrederico Madeira
 
GSO II Aula 3 - Principais Comandos Linux (ubuntu)
GSO II Aula 3 - Principais Comandos Linux (ubuntu)GSO II Aula 3 - Principais Comandos Linux (ubuntu)
GSO II Aula 3 - Principais Comandos Linux (ubuntu)César Augusto Pessôa
 
Introdução a linguagem Go
Introdução a linguagem GoIntrodução a linguagem Go
Introdução a linguagem GoAllisson Azevedo
 
Design de código: princípios e práticas para ter um código sustentável
Design de código: princípios e práticas para ter um código sustentávelDesign de código: princípios e práticas para ter um código sustentável
Design de código: princípios e práticas para ter um código sustentávelAndrews Medina
 
Why functional programming matters
Why functional programming mattersWhy functional programming matters
Why functional programming mattersJean Carlo Machado
 
12 aula - shell script-2015
12   aula - shell script-201512   aula - shell script-2015
12 aula - shell script-2015Flávia Santos
 
Conexões SSH com PHP
Conexões SSH com PHPConexões SSH com PHP
Conexões SSH com PHPFelipe Weckx
 
Introdução a Redes de Computadores - 8 - Nível de Transporte - Sockets
Introdução a Redes de Computadores - 8 - Nível de Transporte - SocketsIntrodução a Redes de Computadores - 8 - Nível de Transporte - Sockets
Introdução a Redes de Computadores - 8 - Nível de Transporte - SocketsAndre Peres
 
Geolocalização em PHP - Google Places, Maps e Routes
Geolocalização em PHP - Google Places, Maps e RoutesGeolocalização em PHP - Google Places, Maps e Routes
Geolocalização em PHP - Google Places, Maps e RoutesLuis Gustavo Almeida
 
Leonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional InterfacesLeonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional InterfacesDevCamp Campinas
 

Mais procurados (20)

Proxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesProxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testes
 
Sobrecarga e invocação de métodos - Preparatório Certificação - OCAJP7 - Aula...
Sobrecarga e invocação de métodos - Preparatório Certificação - OCAJP7 - Aula...Sobrecarga e invocação de métodos - Preparatório Certificação - OCAJP7 - Aula...
Sobrecarga e invocação de métodos - Preparatório Certificação - OCAJP7 - Aula...
 
Bash, o poder da linha de comando! - Tchelinux.org 2017
Bash, o poder da linha de comando! - Tchelinux.org 2017Bash, o poder da linha de comando! - Tchelinux.org 2017
Bash, o poder da linha de comando! - Tchelinux.org 2017
 
Shell Script - Controle de fluxo
Shell Script - Controle de fluxoShell Script - Controle de fluxo
Shell Script - Controle de fluxo
 
GSO II Aula 3 - Principais Comandos Linux (ubuntu)
GSO II Aula 3 - Principais Comandos Linux (ubuntu)GSO II Aula 3 - Principais Comandos Linux (ubuntu)
GSO II Aula 3 - Principais Comandos Linux (ubuntu)
 
Congomongo
Congomongo Congomongo
Congomongo
 
Introdução a linguagem Go
Introdução a linguagem GoIntrodução a linguagem Go
Introdução a linguagem Go
 
Palestra cbq
Palestra cbqPalestra cbq
Palestra cbq
 
Design de código: princípios e práticas para ter um código sustentável
Design de código: princípios e práticas para ter um código sustentávelDesign de código: princípios e práticas para ter um código sustentável
Design de código: princípios e práticas para ter um código sustentável
 
Why functional programming matters
Why functional programming mattersWhy functional programming matters
Why functional programming matters
 
Python Class
Python ClassPython Class
Python Class
 
Linguagem Go
Linguagem GoLinguagem Go
Linguagem Go
 
12 aula - shell script-2015
12   aula - shell script-201512   aula - shell script-2015
12 aula - shell script-2015
 
Conexões SSH com PHP
Conexões SSH com PHPConexões SSH com PHP
Conexões SSH com PHP
 
Introdução a Redes de Computadores - 8 - Nível de Transporte - Sockets
Introdução a Redes de Computadores - 8 - Nível de Transporte - SocketsIntrodução a Redes de Computadores - 8 - Nível de Transporte - Sockets
Introdução a Redes de Computadores - 8 - Nível de Transporte - Sockets
 
Php curl - Coleta de dados na web
Php curl - Coleta de dados na webPhp curl - Coleta de dados na web
Php curl - Coleta de dados na web
 
Geolocalização em PHP - Google Places, Maps e Routes
Geolocalização em PHP - Google Places, Maps e RoutesGeolocalização em PHP - Google Places, Maps e Routes
Geolocalização em PHP - Google Places, Maps e Routes
 
Tunneling
TunnelingTunneling
Tunneling
 
Árvores B
Árvores BÁrvores B
Árvores B
 
Leonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional InterfacesLeonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional Interfaces
 

Destaque

[SCTI 2011] - (Des)protegendo mídias USB
[SCTI 2011] -  (Des)protegendo mídias USB[SCTI 2011] -  (Des)protegendo mídias USB
[SCTI 2011] - (Des)protegendo mídias USBSCTI UENF
 
[SCTI 2011] - Groupwares e os Espaços Virtuais: problemas, soluções e desafios
[SCTI 2011] -  Groupwares e os Espaços Virtuais: problemas, soluções e desafios[SCTI 2011] -  Groupwares e os Espaços Virtuais: problemas, soluções e desafios
[SCTI 2011] - Groupwares e os Espaços Virtuais: problemas, soluções e desafiosSCTI UENF
 
Segurança em Servidores de Games - (Minicraft)
Segurança em Servidores de Games - (Minicraft)Segurança em Servidores de Games - (Minicraft)
Segurança em Servidores de Games - (Minicraft)Bruno Alexandre
 
[SCTI 2011] - Fundamentos da Segurança da Informação
[SCTI 2011] - Fundamentos da Segurança da Informação[SCTI 2011] - Fundamentos da Segurança da Informação
[SCTI 2011] - Fundamentos da Segurança da InformaçãoSCTI UENF
 
Palestra: Pentest - Intrusão de Redes
Palestra: Pentest - Intrusão de RedesPalestra: Pentest - Intrusão de Redes
Palestra: Pentest - Intrusão de RedesBruno Alexandre
 
Técnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosTécnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosCampus Party Brasil
 
Livro Foca linux
Livro Foca linuxLivro Foca linux
Livro Foca linuxSoftD Abreu
 

Destaque (8)

[SCTI 2011] - (Des)protegendo mídias USB
[SCTI 2011] -  (Des)protegendo mídias USB[SCTI 2011] -  (Des)protegendo mídias USB
[SCTI 2011] - (Des)protegendo mídias USB
 
[SCTI 2011] - Groupwares e os Espaços Virtuais: problemas, soluções e desafios
[SCTI 2011] -  Groupwares e os Espaços Virtuais: problemas, soluções e desafios[SCTI 2011] -  Groupwares e os Espaços Virtuais: problemas, soluções e desafios
[SCTI 2011] - Groupwares e os Espaços Virtuais: problemas, soluções e desafios
 
Segurança em Servidores de Games - (Minicraft)
Segurança em Servidores de Games - (Minicraft)Segurança em Servidores de Games - (Minicraft)
Segurança em Servidores de Games - (Minicraft)
 
[SCTI 2011] - Fundamentos da Segurança da Informação
[SCTI 2011] - Fundamentos da Segurança da Informação[SCTI 2011] - Fundamentos da Segurança da Informação
[SCTI 2011] - Fundamentos da Segurança da Informação
 
Seminario Seguranca da Informação
Seminario Seguranca da InformaçãoSeminario Seguranca da Informação
Seminario Seguranca da Informação
 
Palestra: Pentest - Intrusão de Redes
Palestra: Pentest - Intrusão de RedesPalestra: Pentest - Intrusão de Redes
Palestra: Pentest - Intrusão de Redes
 
Técnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosTécnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivos
 
Livro Foca linux
Livro Foca linuxLivro Foca linux
Livro Foca linux
 

Semelhante a Surviving the Command Line

O Que é shell - bash
O Que é shell - bashO Que é shell - bash
O Que é shell - bashSérgio Silva
 
Implantação de sistemas desegurança com linux
Implantação de sistemas desegurança com linuxImplantação de sistemas desegurança com linux
Implantação de sistemas desegurança com linuxSoftD Abreu
 
Simulado lpi 117_101
Simulado lpi 117_101Simulado lpi 117_101
Simulado lpi 117_101Daniel Moreno
 
Implatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com LinuxImplatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com LinuxAlvaro Gomes
 
Comandos do linux
Comandos do linuxComandos do linux
Comandos do linuxPeslPinguim
 
Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2Leo Amorim
 
Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2Leo Amorim
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2Daniel
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECLW3P Projetos Web
 
Supervisão e Monitorização
Supervisão e MonitorizaçãoSupervisão e Monitorização
Supervisão e MonitorizaçãoSAPO Sessions
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonrodrigopex
 
Linux - Shell e Comandos Básicos
Linux - Shell e Comandos BásicosLinux - Shell e Comandos Básicos
Linux - Shell e Comandos BásicosFrederico Madeira
 
Curso Básico/Intermediário Linux - Colmeia 2008 - Emacs
Curso Básico/Intermediário Linux -  Colmeia 2008 - EmacsCurso Básico/Intermediário Linux -  Colmeia 2008 - Emacs
Curso Básico/Intermediário Linux - Colmeia 2008 - EmacsMarco Carvalho de Oliveira
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1Leo Amorim
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Leo Amorim
 
Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL
Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSLPalestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL
Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSLfgsl
 
Principais comandos do terminal no linux tecnologia para todos!
Principais comandos do terminal no linux   tecnologia para todos!Principais comandos do terminal no linux   tecnologia para todos!
Principais comandos do terminal no linux tecnologia para todos!Fábio Fernando
 

Semelhante a Surviving the Command Line (20)

O Que é shell - bash
O Que é shell - bashO Que é shell - bash
O Que é shell - bash
 
Implantação de sistemas desegurança com linux
Implantação de sistemas desegurança com linuxImplantação de sistemas desegurança com linux
Implantação de sistemas desegurança com linux
 
Simulado lpi 117_101
Simulado lpi 117_101Simulado lpi 117_101
Simulado lpi 117_101
 
01 notações iniciais
01   notações iniciais01   notações iniciais
01 notações iniciais
 
Linux shell
Linux shellLinux shell
Linux shell
 
Implatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com LinuxImplatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com Linux
 
Comandos do linux
Comandos do linuxComandos do linux
Comandos do linux
 
Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2
 
Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECL
 
Supervisão e Monitorização
Supervisão e MonitorizaçãoSupervisão e Monitorização
Supervisão e Monitorização
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Linux - Shell e Comandos Básicos
Linux - Shell e Comandos BásicosLinux - Shell e Comandos Básicos
Linux - Shell e Comandos Básicos
 
Curso Básico/Intermediário Linux - Colmeia 2008 - Emacs
Curso Básico/Intermediário Linux -  Colmeia 2008 - EmacsCurso Básico/Intermediário Linux -  Colmeia 2008 - Emacs
Curso Básico/Intermediário Linux - Colmeia 2008 - Emacs
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1
 
PHP fora da Web
PHP fora da WebPHP fora da Web
PHP fora da Web
 
Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL
Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSLPalestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL
Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL
 
Principais comandos do terminal no linux tecnologia para todos!
Principais comandos do terminal no linux   tecnologia para todos!Principais comandos do terminal no linux   tecnologia para todos!
Principais comandos do terminal no linux tecnologia para todos!
 

Surviving the Command Line

  • 1. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 ${CLI} Sobrevivendo na Linha de Comando Leandro Martelli martelli@tawala.com.br
  • 2. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Por que a linha de comando?
  • 3. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Por que a linha de comando? - velocidade.
  • 4. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Por que a linha de comando? - velocidade. - acesso remoto.
  • 5. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Por que a linha de comando? - velocidade. - acesso remoto. - flexibilidade.
  • 6. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Por que a linha de comando? - velocidade. - acesso remoto. - flexibilidade. - poder!
  • 7. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Shell 101: - interface entre usuário e sistema.
  • 8. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Shell 101: - interface entre usuário e sistema. - interpretação de comandos.
  • 9. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Shell 101: - interface entre usuário e sistema. - interpretação de comandos. - exemplos de shell: * bash * tcsh * ksh * zsh
  • 10. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Shell 101: - interface entre usuário e sistema. - interpretação de comandos. - exemplos de shell: * bash * tcsh * zsh * ksh (Greg Sullivan, MPM)
  • 11. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Acessando o Sistema: - local: * xterm (Linux) * gnome-terminal (Linux) * iTerm (Mac) * cmd (Windows)
  • 12. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Acessando o Sistema: - local: * xterm (Linux) * gnome-terminal (Linux) * iTerm (Mac) * cmd (Windows) ??????????
  • 13. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Acessando o Sistema: - local: * xterm (Linux) * gnome-terminal (Linux) * iTerm (Mac) * cmd (Windows) ?????????? - remoto: * PuTTY (Windows)
  • 14. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Acessando um Sistema Remoto: $ ssh martelli@srv.tawala.com.br -p 23514 martelli@srv.tawala.com.br's password: Last login: Thu Nov 10 00:44:48 2011 from 201.222.4.136 [martelli@srv ~]$
  • 15. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Acessando um Sistema Remoto: $ ssh martelli@srv.tawala.com.br -p 23514 martelli@srv.tawala.com.br's password: Last login: Thu Nov 10 00:44:48 2011 from 201.222.4.136 [martelli@srv ~]$ Versão Preguiçosa: $ ssh servidor Last login: Thu Nov 10 00:45:34 2011 from 201.222.4.136 [martelli@srv ~]$
  • 16. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Acessando um Sistema Remoto: $ ssh martelli@srv.tawala.com.br -p 23514 martelli@srv.tawala.com.br's password: Last login: Thu Nov 10 00:44:48 2011 from 201.222.4.136 [martelli@srv ~]$ Versão Preguiçosa: $ ssh servidor Last login: Thu Nov 10 00:45:34 2011 from 201.222.4.136 [martelli@srv ~]$ ???
  • 17. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Passo [1] - arquivo .ssh/config: Host servidor HostName srv.tawala.com.br User martelli Port 23514
  • 18. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Passo [1] - arquivo .ssh/config: Host servidor HostName srv.tawala.com.br User martelli Port 23514 Editando sem editor: $ cat > ~/.ssh/config << FIM Host servidor HostName srv.tawala.com.br User martelli Port 23514 FIM $
  • 19. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Passo [2] - Autenticação por chave pública: $ ssh-keygen -b 2048 Generating public/private rsa key pair. Enter file in which to save the key (/home/teste/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/teste/.ssh/id_rsa. Your public key has been saved in ... $ ssh-copy-id -i ~/.ssh/id_rsa servidor martelli@srv's password: Now try logging into the machine, with "ssh 'servidor'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.
  • 20. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Editando sem editor[2] - perl: $ for i in 1 2 3 > do > echo 'text errado' > f${i} > done $ cat f* text errado text errado text errado $
  • 21. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Editando sem editor[2] - perl: $ for i in 1 2 3 > do > echo 'text errado' > f${i} > done $ cat f* text errado text errado text errado $ perl -i -pe 's/ errado/o certo/' f{1,3} $
  • 22. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Editando sem editor[2] - perl: $ for i in 1 2 3 > do > echo 'text errado' > f${i} > done $ cat f* text errado text errado text errado $ perl -i -pe 's/ errado/o certo/' f{1,3} $ cat f* texto certo text errado texto certo
  • 23. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Navegando por diretórios - pushd/popd: $ pwd /tmp/scti2011 $ find . . ./a ./a/b ./a/b/c ./a/d ./a/d/e ./a/f ./a/f/g $ pushd . $ cd /Users/martelli $ cd tmp $ pwd /Users/martelli/tmp $ popd /tmp/scti2011 $ pwd /tmp/scti2011
  • 24. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Navegando por diretórios[2] - cdspell: $ cd /tpm/stci2011 -bash: cd: /tpm/stci2011: No such file or directory $
  • 25. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Navegando por diretórios[2] - cdspell: $ cd /tpm/stci2011 -bash: cd: /tpm/stci2011: No such file or directory $ shopt -s cdspell $
  • 26. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Navegando por diretórios[2] - cdspell: $ cd /tpm/stci2011 -bash: cd: /tpm/stci2011: No such file or directory $ shopt -s cdspell $ cd /tpm/stci2011 /tmp/scti2011 $ pwd /tmp/scti2011
  • 27. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Shell multi-tarefa - jobs/fg/bg: $ vi demo.txt ^Z [1]+ Stopped vi demo.txt $ vi demoNovo.txt ^Z [2]+ Stopped vi demoNovo.txt $ find / > lista.txt 2>&1 ^Z [3]+ Stopped find / > lista.txt $ jobs [1] Stopped vi demo.txt [2]- Stopped vi demoNovo.txt [3]+ Stopped find / > lista.txt $ bg 3 [3]+ find / > lista.txt 2>&1 & $ fg 1 (de volta ao arquivo demo.txt)
  • 28. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Criando comandos - function: $ $ function demo() { > echo "a: $1" > echo "b: $2" > echo "c: $3" > } $ demo primeiro segundo terceiro a: primeiro b: segundo c: terceiro $
  • 29. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Shell Scripts: “shabang”: #!/bin/bash $ cat > demo.sh <<FIM #!/bin/bash MSG=$1 for ((i=0;i<10;i=$i+1)) do echo $i: $MSG done FIM $ chmod +x demo.sh $ ./demo.sh “Olá Mundo” 0: Olá Mundo 1: Olá Mundo 2: Olá Mundo 3: Olá Mundo 4: Olá Mundo ...
  • 30. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Shell Scripts - depuração: $ bash -x ./demo.sh 'Olá Mundo' + MSG='Olá Mundo' + (( i=0 )) + (( i<10 )) + echo 0: Olá Mundo 0: Olá Mundo + (( i=0+1 )) + (( i<10 )) + echo 1: Olá Mundo 1: Olá Mundo + (( i=1+1 )) + (( i<10 )) + echo 2: Olá Mundo 2: Olá Mundo + (( i=2+1 )) + (( i<10 )) + echo 3: Olá Mundo ...
  • 31. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Terminais Múltiplos - screen: $ screen -S demo CTRL+a-d [detached] neutrino:scti2011 martelli$ screen -ls There is a screen on: 462.demo (Detached) 1 Socket in /var/folders/gt/kqs2wvxd4yl7kfdm6x_b9rph0000gn/T/.screen. $ screen -x demo
  • 32. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Comandos amigos do dia-a-dia: - awk - sed - sort - uniq - grep / egrep - bc - xargs - tr - curl falta algo...
  • 33. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Comandos amigos do dia-a-dia: - awk - sed - sort - uniq - grep / egrep - bc - xargs - tr - curl Não esqueçamos o pipe: |
  • 34. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Hands-on: - screen (para os vários exemplos) - bash -x - netstat - meetings.log - /proc - file descriptors - bash: $() $? - script com “quiet grep” - tunneling com SSH - openssl
  • 35. ${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 Obrigado! Leandro Martelli martelli@tawala.com.br www.tawala.com.br