O documento discute como sobreviver na linha de comando, incluindo por que usar a linha de comando, como acessar sistemas localmente e remotamente, navegar entre diretórios, executar múltiplas tarefas, criar comandos e scripts, e comandos úteis como awk, sed e grep.
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisFabrízio Mello
Desenvolver uma aplicação em PHP com PostgreSQL é uma combinação interessante, pois permite criar apps web escaláveis e de alta performance, bem como serviços, jobs, etc. Mas na maioria das vezes o uso fica limitado a conectar, executar um SQL e desconectar do banco de dados. Porém a extensão PostgreSQL para PHP implementa uma série de recursos interessantes: queries assincronas, notificação assincrona, bulk load, BLOBs, cursores, consultas preparadas, etc. Veremos um pouco desses recursos. Palestra apresentada na PHP Conference 2017 em Osasco/SP
O shell é o prompt da linha de comando do Unix e do Linux, que recebe e executa comandos digitados pelo usuário. Na linha de comando, podemos utilizar diversos comandos um após o outro. Se colocarmos diversas linhas de comandos em um arquivo texto, teremos um script em shell ou, um Shell Script. Além de comandos, um Shell Script pode conter todas as estruturas de uma linguagem de programação, como if, for, while, variáveis e funções.
Nesse minicurso veremos como automatizar tarefas usando Shell Script e conheceremos um pouco mais sobre alguns dos comandos mais úteis para serem utilizados tanto nos scripts quanto diretamente pela linha de comando. Além disso, veremos como customizar a inicialização do seu shell, como utilizar variáveis ambiente, criar seus próprios comandos e como criar um autocompletar para seus eles.
Slide utilizado no curso preparatório para a certificação OCAJP7. Nessa aula aprendemos diversos aspectos sobre os membros de uma classe! http://www.sitedoph.com.br/preparatorio-para-a-certificacao-java-ocajp-7-aula-2/
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisFabrízio Mello
Desenvolver uma aplicação em PHP com PostgreSQL é uma combinação interessante, pois permite criar apps web escaláveis e de alta performance, bem como serviços, jobs, etc. Mas na maioria das vezes o uso fica limitado a conectar, executar um SQL e desconectar do banco de dados. Porém a extensão PostgreSQL para PHP implementa uma série de recursos interessantes: queries assincronas, notificação assincrona, bulk load, BLOBs, cursores, consultas preparadas, etc. Veremos um pouco desses recursos. Palestra apresentada na PHP Conference 2017 em Osasco/SP
O shell é o prompt da linha de comando do Unix e do Linux, que recebe e executa comandos digitados pelo usuário. Na linha de comando, podemos utilizar diversos comandos um após o outro. Se colocarmos diversas linhas de comandos em um arquivo texto, teremos um script em shell ou, um Shell Script. Além de comandos, um Shell Script pode conter todas as estruturas de uma linguagem de programação, como if, for, while, variáveis e funções.
Nesse minicurso veremos como automatizar tarefas usando Shell Script e conheceremos um pouco mais sobre alguns dos comandos mais úteis para serem utilizados tanto nos scripts quanto diretamente pela linha de comando. Além disso, veremos como customizar a inicialização do seu shell, como utilizar variáveis ambiente, criar seus próprios comandos e como criar um autocompletar para seus eles.
Slide utilizado no curso preparatório para a certificação OCAJP7. Nessa aula aprendemos diversos aspectos sobre os membros de uma classe! http://www.sitedoph.com.br/preparatorio-para-a-certificacao-java-ocajp-7-aula-2/
Slide utilizado no curso preparatório para a certificação OCAJP7. Nessa aula aprendemos como utilizar os escopos e os modificadores. http://www.sitedoph.com.br/preparatorio-para-a-certificacao-java-ocajp-7-aula-2/
Bash, o poder da linha de comando! - Tchelinux.org 2017Sandro Custodio
Palestra sobre Bash no Tchelinux.org, evento de Bagé em 26/08/2017. Com conhecimento de SysyAdmin o palestrante introduziu a platéia no na primeira hora. Depois deste slides houve demostração prática de 1h, dando tempo apenas para o mínimo até chegar na cron (agendamento/automação) de um script).
Terceira aula de Gestão de Sistemas Operacionais II - FATEC de Araçatuba
1. Apresentar os principais comandos para utilização em terminal no sistema operacional Linux Ubuntu, com prática em laboratório e estudo dirigido.
2. Realizar prática em laboratório apresentando uma comparação entre os comandos utilizados no sistema operacional Windows e Ubuntu.
Apresentação realizada no FLISol Campina Grande 2015 sobre a linguagem Go.
Os códigos utilizados podem ser encontrados aqui https://github.com/allisson/golang-exemplos
Design de código: princípios e práticas para ter um código sustentávelAndrews Medina
Escrever código é algo fácil o difícil é manter seu código limpo, legível por muito tempo sem transformá-lo em um código legado. Irei abordar várias práticas, princípios e padrões que nos ajudam a escrever e manter o código limpo.
Apresentação feita na PHP Conference 2014 sobre a utilização do PHP para conexões SSH com outros equipamentos. Comparação entre as bibliotecas disponíveis e casos de uso.
Slide utilizado no curso preparatório para a certificação OCAJP7. Nessa aula aprendemos como utilizar os escopos e os modificadores. http://www.sitedoph.com.br/preparatorio-para-a-certificacao-java-ocajp-7-aula-2/
Bash, o poder da linha de comando! - Tchelinux.org 2017Sandro Custodio
Palestra sobre Bash no Tchelinux.org, evento de Bagé em 26/08/2017. Com conhecimento de SysyAdmin o palestrante introduziu a platéia no na primeira hora. Depois deste slides houve demostração prática de 1h, dando tempo apenas para o mínimo até chegar na cron (agendamento/automação) de um script).
Terceira aula de Gestão de Sistemas Operacionais II - FATEC de Araçatuba
1. Apresentar os principais comandos para utilização em terminal no sistema operacional Linux Ubuntu, com prática em laboratório e estudo dirigido.
2. Realizar prática em laboratório apresentando uma comparação entre os comandos utilizados no sistema operacional Windows e Ubuntu.
Apresentação realizada no FLISol Campina Grande 2015 sobre a linguagem Go.
Os códigos utilizados podem ser encontrados aqui https://github.com/allisson/golang-exemplos
Design de código: princípios e práticas para ter um código sustentávelAndrews Medina
Escrever código é algo fácil o difícil é manter seu código limpo, legível por muito tempo sem transformá-lo em um código legado. Irei abordar várias práticas, princípios e padrões que nos ajudam a escrever e manter o código limpo.
Apresentação feita na PHP Conference 2014 sobre a utilização do PHP para conexões SSH com outros equipamentos. Comparação entre as bibliotecas disponíveis e casos de uso.
Quem nunca perdeu um arquivo após deletar algo por engano na máquina fotográfica, computador ou celular? Ou ainda, quem nunca formatou um pendrive ou partição de disco sem querer? Veja como utilizar técnicas de Forense Computacional para recuperar arquivos apagados. Recuperações a partir de dados ainda existentes na memória RAM e demonstrações ao vivo.
Palestrante: João Eriberto Mota Filho
Oficial de Cavalaria do Exército Brasileiro. Gerente de Rede e de Segurança em Rede do Gabinete do Comandante do Exército. Coordenador e professor da pós-graduação em Software Livre na Universidade Católica de Brasília (UCB) e professor da pós-graduação em Perícia Digital (UCB). Autor dos livros Linux & Seus Servidores (2000), Pequenas Redes com Microsoft Windows (2001) e Descobrindo o Linux (2ª edição em 2007).
Linux4All#2 é o segundo minicurso sobre Gnu/Linux, realizado na Uncisal (Universidade Estadual de Ciências Médicas de Alagoas). Abordando conceitos teóricos/praticos a nível intermediário de uma forma simples e dinâmica, ministrada por mim.
Ferramentas e metodologias para supervisionar e monitorizar sistemas remotos.
Como deixar centenas de servidores na empresa e ir para casa dormir descansado.
Este é um mini-curso básico de Python. Já foi aplicado na Semana de tecnologia de Universidade Católica e no encontro de tecnologia de Especializa (ZCon).
Link dos slides: https://viniciuscampitelli.com/slides/php-fora-da-web
O PHP foi inicialmente feito para a Web, mas também podemos utilizá-lo para criar CLI scripts e até mesmo daemons. É lógico que existem linguagens focadas para isso, mas em alguns cenários podemos aproveitar os códigos PHP já existentes no backend e também a experiência dos programadores da equipe. Iremos ver como lidar com argumentos para scripts e roteá-los para comandos, como criar mecanismos de controle e execução de processos externos e em background e ter códigos que sejam reaproveitáveis entre ambientes.
Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSLfgsl
Segurança de Informações é uma área abrangente e importante para as corporações, pois visa garantir a continuidade de negócio, zelando da imagem da Empresa perante o mercado. O maior patrimônio das Empresas, sem dúvida nenhuma, são suas informações. E nela, devemos estar sempre atentos para prevenir as ameaças e diminuir os riscos em falhas. Mitigar os riscos, ameaças, falhas ou panes, devemos implementar controles no GNU/Linux. Os controles vão desde a nível de kernel até políticas de conta de usuários. Estes controles chamamos de "Hardening Linux". A palestra sobre "Hardening Linux" exibirá as melhores práticas das dezenas de controles a serem aplicados no GNU/Linux e a explicação técnica de como implementá-los, fazendo um paralelo com as normas ISO 27001 e ISO 17799.
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