[scti 2011] - cli: sobrevivendo na linha de comando

35
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011 ${CLI} Sobrevivendo na Linha de Comando Leandro Martelli [email protected]

Upload: scti-uenf

Post on 09-Jul-2015

457 views

Category:

Documents


5 download

DESCRIPTION

Palestra ministrada por Leandro Martelli na SCTI 2011.

TRANSCRIPT

Page 1: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

${CLI}

Sobrevivendo na Linha de Comando

Leandro [email protected]

Page 2: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Por que a linha de comando?

Page 3: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Por que a linha de comando?

- velocidade.

Page 4: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Por que a linha de comando?

- velocidade.

- acesso remoto.

Page 5: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Por que a linha de comando?

- velocidade.

- acesso remoto.

- flexibilidade.

Page 6: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Por que a linha de comando?

- velocidade.

- acesso remoto.

- flexibilidade.

- poder!

Page 7: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Shell 101:

- interface entre usuário e sistema.

Page 8: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Shell 101:

- interface entre usuário e sistema.

- interpretação de comandos.

Page 9: [SCTI 2011] - CLI: sobrevivendo na linha de comando

${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

Page 10: [SCTI 2011] - CLI: sobrevivendo na linha de comando

${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)

Page 11: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Acessando o Sistema:

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

Page 12: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Acessando o Sistema:

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

Page 13: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Acessando o Sistema:

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

- remoto:* PuTTY (Windows)

Page 14: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Acessando um Sistema Remoto:

$ ssh [email protected] -p [email protected]'s password:Last login: Thu Nov 10 00:44:48 2011 from 201.222.4.136[martelli@srv ~]$

Page 15: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Acessando um Sistema Remoto:

$ ssh [email protected] -p [email protected]'s password:Last login: Thu Nov 10 00:44:48 2011 from 201.222.4.136[martelli@srv ~]$

Versão Preguiçosa:

$ ssh servidorLast login: Thu Nov 10 00:45:34 2011 from 201.222.4.136[martelli@srv ~]$

Page 16: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Acessando um Sistema Remoto:

$ ssh [email protected] -p [email protected]'s password:Last login: Thu Nov 10 00:44:48 2011 from 201.222.4.136[martelli@srv ~]$

Versão Preguiçosa:

$ ssh servidorLast login: Thu Nov 10 00:45:34 2011 from 201.222.4.136[martelli@srv ~]$

???

Page 17: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Passo [1] - arquivo .ssh/config:

Host servidorHostName srv.tawala.com.brUser martelliPort 23514

Page 18: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Passo [1] - arquivo .ssh/config:

Host servidorHostName srv.tawala.com.brUser martelliPort 23514

Editando sem editor:$ cat > ~/.ssh/config << FIMHost servidor

HostName srv.tawala.com.brUser martelliPort 23514

FIM$

Page 19: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Passo [2] - Autenticação por chave pública:

$ ssh-keygen -b 2048Generating 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 servidormartelli@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.

Page 20: [SCTI 2011] - CLI: sobrevivendo na linha de comando

${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 erradotext erradotext errado

$

Page 21: [SCTI 2011] - CLI: sobrevivendo na linha de comando

${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 erradotext erradotext errado

$ perl -i -pe 's/ errado/o certo/' f{1,3}$

Page 22: [SCTI 2011] - CLI: sobrevivendo na linha de comando

${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 erradotext erradotext errado

$ perl -i -pe 's/ errado/o certo/' f{1,3}$ cat f*texto certotext erradotexto certo

Page 23: [SCTI 2011] - CLI: sobrevivendo na linha de comando

${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

Page 24: [SCTI 2011] - CLI: sobrevivendo na linha de comando

${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$

Page 25: [SCTI 2011] - CLI: sobrevivendo na linha de comando

${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$

Page 26: [SCTI 2011] - CLI: sobrevivendo na linha de comando

${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

Page 27: [SCTI 2011] - CLI: sobrevivendo na linha de comando

${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)

Page 28: [SCTI 2011] - CLI: sobrevivendo na linha de comando

${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 terceiroa: primeirob: segundoc: terceiro$

Page 29: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Shell Scripts:

“shabang”: #!/bin/bash

$ cat > demo.sh <<FIM#!/bin/bashMSG=\$1for ((i=0;i<10;i=\$i+1))do

echo \$i: \$MSGdoneFIM$ chmod +x demo.sh$ ./demo.sh “Olá Mundo”0: Olá Mundo1: Olá Mundo2: Olá Mundo3: Olá Mundo4: Olá Mundo...

Page 30: [SCTI 2011] - CLI: sobrevivendo na linha de comando

${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á Mundo0: Olá Mundo+ (( i=0+1 ))+ (( i<10 ))+ echo 1: Olá Mundo1: Olá Mundo+ (( i=1+1 ))+ (( i<10 ))+ echo 2: Olá Mundo2: Olá Mundo+ (( i=2+1 ))+ (( i<10 ))+ echo 3: Olá Mundo...

Page 31: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Terminais Múltiplos - screen:

$ screen -S demoCTRL+a-d[detached]neutrino:scti2011 martelli$ screen -lsThere is a screen on:

462.demo (Detached)1 Socket in /var/folders/gt/kqs2wvxd4yl7kfdm6x_b9rph0000gn/T/.screen.$ screen -x demo

Page 32: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Comandos amigos do dia-a-dia:

- awk- sed- sort- uniq- grep / egrep- bc- xargs- tr- curlfalta algo...

Page 33: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Comandos amigos do dia-a-dia:

- awk- sed- sort- uniq- grep / egrep- bc- xargs- tr- curlNão esqueçamos o pipe: |

Page 34: [SCTI 2011] - CLI: sobrevivendo na linha de comando

${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

Page 35: [SCTI 2011] - CLI: sobrevivendo na linha de comando

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

Obrigado!

Leandro [email protected]

www.tawala.com.br