-
Notifications
You must be signed in to change notification settings - Fork 2
Laboratório
-
Instale o Oracle VirtualBox
-
Faça o download do Lubuntu
-
Crie uma nova máquina virtual e siga os passos para instalação do Lubuntu
-
No terminal, execute os seguintes comandos:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install gcc
$ sudo apt-get install make
-
Na máquina virtual, acesse o menu Dispositivos -> Inserir imagem do CD dos adicionais para convidado...
-
No terminal, navegue até o diretório montado e digite
$ sudo ./VBoxLinuxAdditions.run
- Reinicie a VM
- 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
- 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
}
]}
- Execução do servidor
$ json-server --watch db.json
- Acesso ao recurso
http://localhost:3000/livros/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.
- Instalação de um servidor FTP
$ sudo apt-get install proftpd
- Instalação de um cliente FTP
$ sudo apt-get install gftp
- Crie um usuário para acessar exclusivamente o FTP (opcional)
$ sudo useradd -m -s /bin/false usuario_ftp
$ sudo passwd usuario_ftp
- Configuração do servidor (opcional)
O servidor pode ser configurado editando os parâmetros do arquivo abaixo:
$ sudo nano /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.
Caso o arquivo seja alterado, o servidor FTP deve ser reiniciado:
$ sudo etc/init.d/proftpd restart
- Utilize o cliente gftp para acessar o servidor proftpd:
- Máquina: localhost
- Porta: 21
- Usuário: <usuário do sistema operacional>
- Senha: <senha do sistema operacional>
EXERCÍCIO: Escolha um colega de classe para troca de arquivos entre máquinas distintas. OBS: você pode criar um usuário no sistema operacional exclusivo para as credenciais de acesso via FTP, caso não queira fornecer as credenciais do seu usuário.
- Crie o arquivo fake_smtp.py com o conteúdo:
#!/usr/bin/env python
"""Um servidor SMTP fake."""
import smtpd
import asyncore
class FakeSMTPServer(smtpd.SMTPServer):
"""Servidor fake SMTP"""
def __init__(*args, **kwargs):
print "Rodando um servidor fake SMTP na porta 80"
smtpd.SMTPServer.__init__(*args, **kwargs)
def process_message(*args, **kwargs):
pass
if __name__ == "__main__":
smtp_server = FakeSMTPServer(('localhost', 25), None)
try:
asyncore.loop()
except KeyboardInterrupt:
smtp_server.close()
- Inicie o servidor:
$ chmod +x fake_smtp.py
$ sudo ./fake_smtp.py
- Em outra aba do terminal, execute o DebuggingServer para visualizar as respostas do servidor:
$ sudo python -m smtpd -n -c DebuggingServer localhost:25
- 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.
- 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.
-
Baixe os arquivos no repositório
-
Altere a variável ip para o endereço ip do servidor
Obs: Obtenha o endereço IPV4 com o comando ifconfig
- Inicie o servidor em um terminal:
$ python servidorTCP.py
- Abra outro terminal e execute o cliente:
$ python clienteTCP.py
EXERCÍCIO: Complemente o exemplo para que o cliente possa enviar várias mensagens ao servidor 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