Skip to content

Laboratório

Erick Souza edited this page Sep 26, 2017 · 43 revisions

Criando uma máquina virtual

  1. Instale o Oracle VirtualBox

  2. Faça o download do Lubuntu

  3. Crie uma nova máquina virtual e siga os passos para instalação do Lubuntu

  4. No terminal, execute os seguintes comandos:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install gcc
$ sudo apt-get install make
  1. Na máquina virtual, acesse o menu Dispositivos -> Inserir imagem do CD dos adicionais para convidado...

  2. No terminal, navegue até o diretório montado e digite

$ sudo ./VBoxLinuxAdditions.run
  1. Reinicie a VM

HTTP

  1. Instalação de um servidor Web

Instale o nodejs:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

Instale o json-server:

$ sudo npm install -g json-server
  1. Criação do arquivo db.json para representar uma lista de recursos no servidor
{"livros":[
  {
    "id" : 1,
    "isbn" : "978-0641723445",
    "titulo" : "The Lightning Thief",
    "autor" : "Rick Riordan",
    "preco" : 12.50
  },
  {
    "id" : 2,
    "isbn" : "978-1423103349",  
    "titulo" : "The Sea of Monsters",
    "autor" : "Rick Riordan", 
    "preco" : 6.49
  },
  {
    "id" : 3,
    "isbn" : "978-1857995879",   
    "titulo" : "Sophie's World : The Greek Philosophers",
    "autor" : "Jostein Gaarder",
    "preco" : 3.07
  }
]}
  1. Execução do servidor
$ json-server --watch db.json
  1. Acesso ao recurso

http://localhost:3000/livros/1

  1. Instalação do editor Gedit
$ sudo apt-get install gedit
  1. Criação de um cliente para consumir o recurso com base neste exemplo

OBS: Em caso de erro 'promise is not defined' ao realizar uma requsição POST, faça o seguinte:

  • Instale o es6-promise:
$ npm install es6-promise --save
  • Edite o arquivo: /usr/local/lib/node_modules/json-server/node_modules/lowdb/lib/file-async.js

  • Inclua a linha require('es6-promise').polyfill() no início do arquivo.

EXERCÍCIO: Implemente os métodos para atualização e remoção de um recurso, utilizando os verbos PUT e DELETE do HTTP, respectivamente.

FTP

  1. Instalação de um servidor FTP
$ sudo apt-get install proftpd
  1. Instalação de um cliente FTP
$ sudo apt-get install gftp
  1. Criação de um usuário para acessar exclusivamente o FTP
  • Adicione um usuário e senha:
$ sudo useradd -m -s /bin/false userftp
$ sudo passwd userftp
  • Verifique se o novo usuário foi incluído:
sudo gedit /etc/passwd
  • Edite o arquivo:
$ sudo gedit /etc/shells
  • Adicione a linha abaixo no fim do arquivo:
/bin/false
  1. Configuração do servidor

O servidor pode ser configurado editando os parâmetros do arquivo abaixo:

$ sudo gedit /etc/proftpd/proftpd.conf

Alguns campos importantes:

ServerName    "Nome para o seu servidor"
ServerIdent   on "Mensagem para os usuarios"
ServerAdmin   root@localhost
ServerType    standalone
DefaultRoot   ~
  • ServerName: É o nome do seu servidor. Ex.: Servidor FTP

  • ServerIdent: É a mensagem que é mostrada quando um usuário tenta se conectar ao servidor.

  • ServerAdmin: É o e-mail do administrador do servidor.

  • ServerType: É a forma como o ProFTPD vai executar. Valor inetd: o servidor irá executar apenas quando algum usuário estiver ativo. Valor standalone: o servidor irá executar o tempo todo.

  • DefaultRoot: É o diretório que o usuário FTP terá acesso.

  • Inclua o caminho /home/userftp em DefaultRoot

  • Em seguida, o servidor FTP deve ser reiniciado:

$ sudo /etc/init.d/proftpd restart
  1. Utilize o cliente gftp para acessar o servidor proftpd:
  • Máquina: ftp://localhost
  • Porta: 21
  • Usuário: <userftp> ou <usuário do sistema operacional>
  • Senha: <senha de userftp> ou <senha do sistema operacional>

EXERCÍCIO: Escolha um colega de classe para troca de arquivos entre máquinas distintas. OBS: configure a rede da máquina virtual para o modo bridge.

SMTP

  1. Em uma aba do terminal, inicie o servidor:
$ sudo python -m smtpd -n -c DebuggingServer localhost:25
  1. Em outra aba do terminal, teste o servidor SMTP:
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 localhost6.localdomain6 Python SMTP proxy version 0.2
HELO localhost
250 localhost6.localdomain6
MAIL FROM: [email protected]
250 Ok
RCPT TO: [email protected]
250 Ok
DATA
354 End data with .
subject: Hello
to: [email protected]
Olá Bob!
.
250 Ok
QUIT
221 Bye
Connection closed by foreign host.

DNS

  1. Faça uma consulta a um servidor DNS usando o nslookup
  • Formato: nslookup -type=<tipo entrada> <domínio>
$ nslookup -type=a www.google.com

EXERCÍCIO: Execute o comando para os outros tipos vistos em sala (MX, NS, CNAME) e interprete os resultados obtidos.

Socket

  1. Baixe os arquivos no repositório

  2. Altere a variável ip para o endereço ip do servidor

Obs: Obtenha o endereço IPV4 com o comando ifconfig

  1. Inicie o servidor em um terminal:
$ python servidorTCP.py
  1. Abra outro terminal e execute o cliente:
$ python clienteTCP.py

EXERCÍCIO: Complemente o exemplo para que o clienteTCP possa enviar várias mensagens ao servidorTCP após o recebimento de cada resposta.

  • Critério de parada: envio do caracter . (ponto final)

Escolha um colega de sala para trocar mensagens entre cliente e servidor

  • Forneça ao colega seu endereço ip, obtido através do comando ifconfig
  • Faça o servidor mostrar o endereço ip dos clientes que o acessam

Referências

Clone this wiki locally