View
458
Download
5
Category
Preview:
DESCRIPTION
Palestra ministrada por Leandro Martelli na SCTI 2011.
Citation preview
${CLI}: Sobrevivendo na Linha de Comando :: SCTI 2011
${CLI}
Sobrevivendo na Linha de Comando
Leandro Martellimartelli@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 23514martelli@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 23514martelli@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 servidorLast 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 23514martelli@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 servidorLast 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 servidorHostName srv.tawala.com.brUser martelliPort 23514
${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$
${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.
${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
$
${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}$
${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
${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 terceiroa: primeirob: segundoc: terceiro$
${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...
${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...
${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
${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...
${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: |
${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 Martellimartelli@tawala.com.br
www.tawala.com.br
Recommended