Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gnu/Linux e Python

Gnu/Linux e Python

Workshop hands-on explicando como usar Python no Linux.

Apresentado dia 21/01/2017 no FS2W no CT Novatec
Apresentado dia 04/02/2017 no FS2W na Developer School
https://github.com/rg3915/fs2w

Transcript

  1. GNU/Linux e Python Bem vindo ao meu mundo!

  2. Rafael Henrique da Silva Correia @rafaelhenrique http://blog.abraseucodigo.com.br - “Futuro” desenvolvedor

    Python na CargoBR - “Coordenador/instrutor” do Grupo de Estudos Python Sorocaba - Membro do GruPy-SP - Viciado em World of Warcraft (for the horde!) - Palestrante nas horas que sobram - Certificado LPIC-2 por puro “hobbie” Eu
  3. • Richard Stallman e Linus Torvalds • GNU is not

    UNIX! • 4 liberdades x GPL x Software livre ◦ Liberdade de executar o programa para qualquer propósito ◦ Liberdade para estudar/adaptar às suas necessidades ◦ Liberdade de redistribuir cópias ◦ A liberdade de aperfeiçoar o programa e liberar os seus aperfeiçoamentos O que é GNU/Linux? Quem é GNU, quem é Linux e que salada é essa?
  4. • Motivo 1: Porque Linux “é de graça” e software

    livre! • Motivo 2: Porque roda em qualquer máquina! • Motivo 3: Porque o Windows te faz chorar! • Motivo 4: Porque muitas bibliotecas são incompatíveis ou muito trabalhosas de se usar no Windows! • Motivo 5: Repita motivo 3! • Motivo 6: Repita motivo 3! • Motivo 7: …. acho que vocês já entenderam Por que usar Python no GNU/Linux? NO MORE TEARS!
  5. Chega de papo! Hands-on

  6. VirtualBox Por que usar? • Running multiple operating systems simultaneously

    • Easier software installations • Testing and disaster recovery • Infrastructure consolidation https://www.virtualbox.org/manual/UserManual.html
  7. VirtualBox (Ilustrando conforme nosso exemplo) Como funciona? https://www.virtualbox.org/manual/UserManual.html S.O. da

    sua máquina Hardware da sua máquina
  8. / /bin /boot /dev /etc O sistema de arquivos padrão

    O que são, onde vivem e do que se alimentam? /home /lib /lib64 /media /mnt /opt /proc /root /sbin /srv /tmp /usr /var http://www.pathname.com/fhs/pub/fhs-2.3.pdf
  9. O sistema de arquivos padrão O que são, onde vivem

    e do que se alimentam? http://www.pathname.com/fhs/pub/fhs-2.3.pdf • / : diretório inicial, também chamado de raiz • /bin : programas fundamentais para o S.O. • /boot : arquivos estáticos para carregamento do S.O. (bootloader) • /dev : arquivos de dispositivos de caractere e de bloco • /etc : configurações gerais • /home : armazenamento de arquivos dos usuários • /lib e /lib64 : arquivos de bibliotecas de sistema (em geral C/C++)
  10. O sistema de arquivos padrão O que são, onde vivem

    e do que se alimentam? • /media : ponto de montagem para mídias removíveis • /mnt : ponto de montagem para filesystems temporários • /opt : instalação de programas extras de natureza “não linux” • /proc : imagem do kernel em execução • /root : diretório para armazenamento de arquivos pessoais do superusuário • /sbin : programas fundamentais para o S.O. que precisam de permissão de superusuário http://www.pathname.com/fhs/pub/fhs-2.3.pdf
  11. O sistema de arquivos padrão O que são, onde vivem

    e do que se alimentam? • /srv : “antigo diretório” que servia arquivos de um servidor • /tmp : diretório de arquivos temporários, limpo quando S.O. é reiniciado • /usr : contém uma sub-estrutura similar a de / porém com arquivos/comandos “menos essenciais” ao S.O. • /var : contém arquivos de informações variáveis, cache, logs.. etc http://www.pathname.com/fhs/pub/fhs-2.3.pdf
  12. O sistema de arquivos padrão Informações bacanas http://www.pathname.com/fhs/pub/fhs-2.3.pdf • O

    usuário comum (não root) só tem permissão DE ESCRITA no diretório pessoal dele (/home/fulano) e na pasta /tmp
  13. • /boot : arquivos de inicialização usam um certo espaço

    considerável • / : encheu a raiz você trava o sistema • /tmp : é um diretório público onde todos podem escrever • swap : obrigatoriamente deve ser separada • /usr : existem programas bem pesados que ficam no /usr • /var : arquivos de cache/temporários tendem a crescer • /opt : existem programas bem pesados que ficam no /opt • /home : seu diretório pessoal é legal deixar separado para eventuais reinstalações do sistema Dividindo partições Dividir para conquistar! O que é legal separar e por que?
  14. • sda → 21.5 GB ◦ Primárias ▪ /boot →

    700 MB ▪ / → 700 MB ▪ swap → 1 GB ◦ Lógicas ▪ /tmp → 700 MB ▪ /var → 5 GB ▪ /usr → 5 GB ▪ /home → 8.4 GB Como ficou nossa VM? Um exemplo usável (apenas para desenvolvimento) • Áudio desativado • Memória RAM 1 GB • Rede em modo Bridge associada a interface em uso (wi-fi ou cabeada) • S.O. Ubuntu 16.10 Server amd64 • Pacotes standard, nenhum adicional • Grub instalado
  15. Simbologia para permissão de execução de comandos Como é a

    representação em tutoriais? • # : Executar comando como root/superusuário • $ : Executar comando como usuário normal
  16. Instalando/configurando e usando ssh O que um iniciante deve saber?

    # apt-get update # apt-get install ssh # vim /etc/ssh/sshd_config # netstat -naptul https://help.ubuntu.com/community/SSH/OpenSSH/Configuring
  17. Mais mobilidade usando SSH O que um iniciante deve saber?

    • Se você usa Windows recomendo usar MobaXTerm para acessar sua VM remotamente e trabalhar mais tranquilo • Se você usa Linux/Mac OSX basta instalar o SSH client • Ou você pode usar a VM como está mesmo, porém é meio chato de ler, copiar e colar coisas :( https://help.ubuntu.com/community/SSH/OpenSSH/Configuring
  18. O editor de texto VIM vim-nox, um vim parrudão #

    apt-get update # apt-get install vim-nox
  19. O editor de texto VIM O que um iniciante deve

    saber? • i → modo de inserção. Digite ESC para retornar ao modo Normal • :wq → salva e sai do editor • :q →sai sem salvar nada • :w →salva • dd → “recorta” linha corrente • yy → copia • p → cola • :help <comando> → ajuda de determinado comando
  20. Comandos Quais são os comandos indispensáveis? • echo • pwd

    • man • cat • more • less • sort • grep • wc 14 comandos • cp • mkdir • rm • ls • head • tail
  21. Comandos extras Quais são os comandos MUITO ÚTEIS? • find

    • locate • updatedb • du • df • chmod • chown • ifconfig • ping • netstat 10 comandos To-Do: Estes comandos ficam para lição de casa, espero que me perguntem e/ou descubram o que eles fazem rafael@abraseucodigo.com.br
  22. echo mostra texto na tela - ecoa texto na tela

    • Exemplos: $ echo “teste” $ echo $HOME • Exemplo mais bacana: $ if [ $USER == “rafael” ]; then echo “É o Rafael”; else echo “Não é o Rafael”; fi
  23. pwd print working directory - exibir/mostrar diretório de trabalho •

    Exemplo: $ pwd • Exemplo mais bacana: $ echo “Estou em $(pwd)”
  24. man / apropos / help exibe manual do comando exibe

    “sumário” para achar comandos exibe help básico de um comando • Exemplos: $ man ls $ apropos list $ ls --help A PROPÓSito como se chama este comando?
  25. aproposITO O comando estressadinho • Quando você digita apropos sem

    parâmetros ele te “xinga”: $ apropos apropos o que?
  26. cat concatena arquivos / exibe arquivos • Exemplos: $ echo

    “Rafael” > nome.txt && echo “Henrique” > sobrenome.txt $ cat nome.txt $ cat nome.txt sobrenome.txt $ cat nome.txt sobrenome.txt > nome_completo.txt $ cat -n nome_completo.txt
  27. pipe / redirecionamento Como manipular streams de texto? • >

    : manda a saída para um arquivo que você apontar sobrescrevendo o arquivo • >> : manda a saída para um arquivo que você apontar adicionando ao arquivo • | : Empilha comandos em sequência e faz com que a saída de um seja a entrada do outro Extra: Pipe é um caractere que fica no seu teclado, ninguém o usa até começar a usar Linux ou Mac OSX
  28. Pipe Cano / Tubo cat /etc/passwd | cut -d”:” -f1

    | grep “^r” Lista todos os usuários do sistema começados com a letra “r” cat /etc/passwd cut -d”:” -f1 grep “^r”
  29. Redirecionamento > é tipo uma “seta” que direciona o fluxo

    de saída do comando cat /etc/passwd | cut -d”:” -f1 | grep “^r” > usuarios.txt Lista todos os usuários do sistema começados com a letra “r” >
  30. less is more comandos para paginar saída • Exemplos: $

    more /etc/passwd $ less /etc/passwd $ dmesg | less $ dmesg | more
  31. sort ordenar alfabeticamente/numericamente • Exemplos: $ sort /etc/passwd $ sort

    arquivo_desordenado.txt $ sort -u arquivo_desordenado_com_linhas_duplicadas.txt
  32. grep filtrar linhas segundo um padrão Global / Regular Expression

    / Print • Exemplos: $ grep “^r” /etc/passwd $ grep “/bin/bash$” /etc/passwd $ grep “.*Rafael.*” /etc/passwd $ grep -i “.*speech.*” /etc/passwd
  33. wc Word Count • Exemplos: $ wc -l /etc/passwd $

    wc -c /etc/passwd $ wc -w /etc/passwd
  34. cp Copy • Exemplos: $ cp /etc/passwd /home/rafael $ cp

    /etc/passwd /home/rafael/usuarios_sistema.txt $ cp -R /home/rafael/diretorioA /home/rafael/diretorioB
  35. mkdir Make Directory • Exemplos: $ mkdir /home/rafael/diretorioA $ mkdir

    -p /home/rafael/diretorioC/teste/abc
  36. rm Remove • Exemplos: $ rm -r /home/rafael/diretorioC/teste/abc $ rm

    -i /home/rafael/arquivo123 $ rm -f /home/rafael/arquivo321
  37. rm Remove # rm -rf / Não usar este comando

    NUNCA!!!
  38. ls List • Exemplos: $ ls -l $ ls -a

    $ ls -la $ ls --color -l $ ls -d
  39. head Cabeça/Cabeçalho • Exemplos: $ head /etc/passwd $ head -2

    /etc/passwd
  40. tail Rabo/Cauda • Exemplos: $ tail /etc/passwd $ tail -2

    /etc/passwd # tail -f /var/log/messages # tail -f /var/log/messages /var/log/auth.log
  41. Configurando a rede via terminal Removendo o network-manager # update-rc.d

    -f NetworkManager remove # apt-get purge network-manager https://help.ubuntu.com/community/NetworkConfigurationCommandLine/Automatic
  42. Configurando a rede via terminal Configurando a rede com ip

    estático # vim /etc/network/interfaces auto <nome da interface> iface <nome da interface> inet static address <seu ip X.X.X.X> netmask <sua máscara de rede X.X.X.X> gateway <seu gateway X.X.X.X> dns-nameservers <seus dns servers X.X.X.X Y.Y.Y.Y Z.Z.Z.Z> https://help.ubuntu.com/community/NetworkConfigurationCommandLine/Automatic
  43. Configurando a rede via terminal Configurando a rede com ip

    dinâmico # vim /etc/network/interfaces auto <nome da interface> iface <nome da interface> inet dhcp https://help.ubuntu.com/community/NetworkConfigurationCommandLine/Automatic
  44. Configurando a rede via terminal Restartando a rede e checando

    configurações # service networking stop # service networking status # service networking start # service networking status # cat /etc/resolv.conf # ifconfig # ping 8.8.8.8 # ping www.google.com https://help.ubuntu.com/community/NetworkConfigurationCommandLine/Automatic
  45. Instalando pacotes O que um iniciante deve saber? • apt-get

    update • apt-cache search python3 • apt-get install python3
  46. Python Linux Qual a dificuldade em usar o Python do

    S.O. para tudo? • Versões diferentes de Python • Versões diferentes de bibliotecas Python • Fazer experimentos rápidos sem afetar o ambiente • Muitos programas do Linux (desktop em sua maioria) são escritos em Python, e usam o Python do S.O.
  47. Python Linux Soluções para gerenciamento de versões/bibliotecas • pip •

    virtualenv • virtualenvwrapper • pyenv • pipenv http://blog.abraseucodigo.com.br/virtualenv-pip-pra-que-servem.html http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html
  48. Instalando Python(s) com pyenv Baixando e instalando o pyenv... #

    apt-get install curl git $ curl -L http://bit.ly/pyenv-installer | bash http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html
  49. Instalando Python(s) com pyenv Editando o arquivo .bashrc para adicionar

    a conf do pyenv $ vim ~/.bashrc # configurações pyenv export PATH="/home/<seu usuario>/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html Digitar este trecho no final do arquivo .bashrc
  50. Instalando Python(s) com pyenv Recarregando .bashrc e chamando o comando

    pyenv $ source ~/.bashrc $ pyenv pyenv 20160202-10-ga6f1f48 Usage: pyenv <command> [<args>] Some useful pyenv commands are: commands List all available pyenv commands local Set or show the local application-specific Python version …. linhas omitidas …. http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html Recarrega a configuração do seu .bashrc
  51. Instalando Python(s) com pyenv Verificando as versões disponíveis para instalação

    $ pyenv -l Available versions: .... linhas omitidas .... 3.5-dev 3.5.1 3.6-dev .... linhas omitidas .... http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html
  52. Instalando Python(s) com pyenv Instalando Python 3.5 # apt-get install

    -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev $ pyenv install 3.5.1 http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html
  53. Instalando Python(s) com pyenv Usando Python 3.5 $ pyenv versions

    $ pyenv global 3.5.1 $ python http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html
  54. Criando seu primeiro projeto!! Go go go Flask! $ git

    clone git@github.com:rafaelhenrique/flask_simple_hello.git $ cd flask_simple_hello $ python -m venv .venv $ source .venv/bin/activate (.venv)$ pip install -r requirements.txt (.venv)$ python run.py
  55. Criando seu primeiro projeto!! Run run run run!

  56. None
  57. • Guia foca Linux • Blog do Aurélio • Blog

    do Júlio • IBM Developer Works Linux • IBM Developer Works LPIC (certificação Linux) • Dicas -l Referências Extras - Linux Links interessantes
  58. • Instalando qualquer versão do Python no Linux/Mac OSX utilizando

    pyenv • virtualenv/pip pra que servem? • Guia definitivo para organizar meu ambiente Python • Python para Zumbis Referências Extras - Python Links interessantes
  59. • Grupo do Google (mailing-list) ◦ https://groups.google.com/forum/#!forum/python-sorocaba • Canal no

    youtube ◦ http://bit.ly/youtube-python-sorocaba • Nosso slack ◦ https://grupopythonsorocaba.herokuapp.com/ • Eventos presenciais ◦ https://www.meetup.com/pt-BR/Grupy-SP/ ◦ https://www.meetup.com/pt-BR/Developer-Sorocaba/ • Nosso github ◦ https://github.com/python-sorocaba Python Sorocaba Links gerais
  60. Tem interesse em aprender Python com um instrutor tipo eu

    (pois na verdade sou eu mesmo)? Seus problemas acabaram!!!! http://bit.ly/curso-python-sorocaba Developer School Curso de PYTHON!!! \o/
  61. OBRIGADO!!! Perguntas?? Contato: http://blog.abraseucodigo.com.br rafael@abraseucodigo.com.br Google Groups: python-sorocaba