[scti 2011] - cli: sobrevivendo na linha de comando
DESCRIPTION
Palestra ministrada por Leandro Martelli na SCTI 2011.TRANSCRIPT
![Page 1: [SCTI 2011] - CLI: sobrevivendo na linha de comando](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/1.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/2.jpg)
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011
Por que a linha de comando?
![Page 3: [SCTI 2011] - CLI: sobrevivendo na linha de comando](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/3.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/4.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/5.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/6.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/7.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/8.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/9.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/10.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/11.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/12.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/13.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/14.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/15.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/16.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/17.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/18.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/19.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/20.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/21.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/22.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/23.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/24.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/25.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/26.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/27.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/28.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/29.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/30.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/31.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/32.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/33.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/34.jpg)
${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](https://reader030.vdocuments.mx/reader030/viewer/2022020106/559e757f1a28ab8d388b46ad/html5/thumbnails/35.jpg)
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011
Obrigado!
Leandro [email protected]
www.tawala.com.br