Programação para Redes de Computadores (técnico) (diário 2012-1) - Prova 1
Ir para navegação
Ir para pesquisar
Questão 1
Desenvolva um programa de computador que emita o seguinte relatório para todos os usuários. Considere, para os itens abaixo, seus arquivos pessoais no diretório /home:
- Nome do usuário.
- Quantidade de arquivos.
- Tamanho do espaço em disco ocupado.
Uma possível resposta
#!/bin/bash
cd /home
for usuario in $(find . -mindepth 1 -maxdepth 1 -type d | cut -c 3-)
do
echo -n "Usuário ${usuario}"
# Listar arquivos
echo -n " possui $(find ${usuario} 2> /dev/null| wc -l) arquivo(s)"
# Espaço em disco ocupado
echo " e de disco $(du -hc ${usuario} 2> /dev/null | tail -1 | cut -d t -f 1)"
done
Questão 2
Desenvolva um programa que calcula a parcela média de um investimento com juros compostos - até 12 parcelas. Informe:
- O valor de cada parcela sem juro.
- O valor de cada parcela acrescida de juro.
- A parcela média.
- A quantidade de juro final pago.
Uma possível resposta
#!/bin/bash
# ${1} será o valor do empréstimo
# ${2} será a quantidade de parcelas
# ${3} será o valor do juro em número inteiro (%)
# Primeiro teste: se o programa tem os três valores para calcular
if [ "${3}" = "" ]
then
echo "Use: ${0} (empréstimo) (parcelas) (juro em %)"
exit
fi
# Segundo teste: se digitou a quantidade certa de parcelas: 1 a 12.
if [ "${2}" -lt "0" -o "${2}" -gt "12" ]
then
echo "O número de parcelas (${2}) está fora dos limites: 1 a 12."
exit
fi
parcelaSemJuro=$(echo "scale=2; ${1} / ${2}" | bc)
echo "Empréstimo de R$ ${1} em ${2} parcelas com juros a ${3}%."
echo ""
# 1o. mês
parcela=${parcelaSemJuro}
somatorio=${parcela}
echo "1o. mês: R$ ${parcela} (sem juros)."
# Outros meses (2 em diante)
for numParcela in $(seq 2 ${2})
do
parcela=$(echo "scale=2; ${parcela} * (1 + ${3} / 100)" | bc)
somatorio=$(echo "scale=2; ${somatorio} + ${parcela}" | bc)
echo "${numParcela}o. mês: R$ ${parcela}."
done
# Escrever a parcela média
echo ""
echo "A parcela média é R$ $(echo "scale=2; ${somatorio} / ${2}" | bc)."
# Escrever o juro pago ao final de todas as prestações
echo "O juro pago é de R$ $(echo "scale=2; ${somatorio} - ${1}" | bc)."
echo ""
Questão 3
Configure automaticamente o domínio DNS, e seu reverso, de acordo com as seguintes informações:
- Domínio: prc.com.br
- Servidor DHCP: 192.168.1.2
- Servidor Web: 192.168.1.1
- Servidor DNS: 192.168.1.2
- Servidor SSH: 192.168.1.1
Obs.: cada servidor pode ter, no máximo, 1 registro A e vários apelidos (CNAME).
Uma possível resposta
#!/bin/bash
# Variáveis
dominio="prc.com.br"
reverso="1.168.192.in-addr.arpa"
diretorio="/etc/bind"
# Primeiro arquivo: definição das zonas em /etc/bind/named.conf.local
cat > ${diretorio}/named.conf.local << EOF
zone "${dominio}" {
type master;
file "${diretorio}/${dominio}";
};
zone "${reverso}" {
type master;
file "${diretorio}/${reverso}";
};
EOF
# Segundo arquivo: zona direta
cat > ${diretorio}/${dominio} << EOF
@ IN SOA dns.${dominio}. administrador.${dominio}. (
2012051000; serial
86400; refresh
3600; retry
604800; expire
86400; default ttl
)
@ IN NS dns.${dominio}.
dns IN A 192.168.1.2
dhcp IN CNAME dns.${dominio}.
web IN A 192.168.1.1
ssh IN CNAME web.${dominio}.
EOF
# Terceiro arquivo: zona reversa
cat > ${diretorio}/${reverso} << EOF
@ IN SOA dns.${dominio}. administrador.${dominio}. (
2012051000; serial
86400; refresh
3600; retry
604800; expire
86400; default ttl
)
@ IN NS dns.${dominio}.
2 IN PTR dns.${dominio}.
1 IN PTR web.${dominio}.
EOF
Questão 4
Ainda sobre o problema da questão anterior, teste o servidor e mostre os resultados de sucesso e fracasso.
Uma possível resposta
#!/bin/bash
dominio="prc.com.br"
servidor="192.168.1.2"
for teste in "SOA ${dominio}" "NS ${dominio}" "A dns.${dominio}" \
"A web.${dominio}" "PTR 1.1.168.192.in-addr.arpa"
do
clear
echo "A rodar: dig @${servidor} ${teste}"
dig @${servidor} ${teste}
echo -n "Tecle [ENTER] para avançar..."
read enter
done