alexfurlan
(usa Ubuntu)
Enviado em 27/08/2015 - 08:48h
tonyhts escreveu:
Opa.
Desculpe a demora. Tô numa correria maluca... rs
Acho que não entendi algumas coisas. São elas:
a) A localidade é o primeiro campo do csv, no caso : Unidade ( que tbm é o valor da coluna 1). É isso mesmo ?
b) O arquivo csv só tem 2 linhas mesmo?
c) De onde extrair o nome da empresa? Pode ser passado na execução do script?
Se a resposta for sim para as 3 perguntas, segue abaixo o script. Se não, me avise para mudarmos.
Supondo que não saiba como criar e executar um script, vou descrever passo a passo:
1) Crie o arquivo (vc pode chamar como quiser, mas aqui vamos chamá-lo de script.sh):
cd /caminho/da/pasta/csv
nano script.sh
2) Cole o conteúdo Abaixo:
#!/bin/bash
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# *
# Script criado para resolver o problema do user @Alexfurlan do VOl. *
# *
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# *
# Lista os arquivos .csv na pasta em que for executado, *
# trata, cria a coluna porcentagem e gera um arquivo HTML. *
# *
# Uso: O nome da empresa deve ser passado como parâmetro, *
# do contrário, o nome padrão será Viva ao Linux Co. *
# Caso deseje usar um nome de empresa com espaço, *
# coloque-o entre as aspas duplas. Por ex: *
# ./script.sh "Nome de uma Empresa com Espaço" *
# *
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# Variáveis
# Arquivo Final (HTML)
final="lista_server_$(date '+%d%m%Y').html"
# Nome da Empresa
if [ -z "$1" ]
then
empresa="Viva ao Linux Co."
else
empresa="$1"
fi
# Local do SERVIDOR
local_server=$(tail -1 $(ls *.csv | tail -1 ) | awk -F";" '{print$1}')
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# Funções
monta_head () {
echo -e "<html>\n<head>\n<title>Lista Servers</title>\n</head>\n<body>"
echo -e "<h2>Lista de Servidores</h2>\n\n"
echo -e "<h3>Empresa: $empresa</h3>"
echo -e "<h3>Local: $local_server</h3>"
echo -e "<h3>Data de Referencia: $(date '+%d %m %Y')</h3>\n\n\n"
echo -e "<table border='1'>\n<tr><th> UNIDADE </th><th>IP SERVIDOR</th><th>TOTAL LOECs</th><th>TOTAL LA</th><th>%</th>"
}
monta_body () {
for arq in $(ls *.csv)
do tail -1 $arq | sed 's/\s//g;s/;/<\/td><td>/g;s/^/<tr><td>/g;s/$/<\/td>/g'
echo "<td>$(tail -1 $arq | awk -F";" '{print$4/$3*100}' | sed -r 's/[0-9]{2}$/%/')</td></tr>"
done
}
monta_footer () {
echo -e "</table>\n\n <p> $(ls *.csv | wc -l) arquivos CSVs foram tratados com sucesso!</body>\n</hmtl>"
}
# Construindo HTML
monta_head > $final
monta_body >> $final
monta_footer >> $final
3) Salve e saia apertando CTRL X , depois aperte Y ou S, depois ENTER.
4) Dê permissão de execução:
chmod +x script.sh
5) Execute-o, passando como parâmetro o nome da empresa.:
./script.sh "Codigos Abertos S/A"
Pronto, ele vai gerar um arquivo chamado lista_server_data de hoje.html
OBS: O script deve ser executado na mesma pasta onde se encontram os arquivos.csv e deve receber como parâmetro nome da empresa. Caso o nome da empresa não for informado, o nome padrão será Viva ao Linux Co.
Era isso que queria?
abs,
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.
--- Mestre dos Mestres - Alan Turing ---
tonyhts, bom dia.
Também estou na correria. Muito obrigado pelo retorno.
Andei dando uma lida nas informações que passei anteriormente, e também achei um pouco confuso.
No caso, o cabeçalho todo (empresa, local, etc) é fixo, ou seja, as informações não vem de lugar nenhum. São incluídas manualmente, vai ser sempre a mesma coisa, dia após dia. Mas isso é tranquilo para mim. A única coisa que vai mudar, é a data de referência, mas também é tranquilo.
O arquivo csv tem apenas duas linhas (cabeçalho e as informações). O que vai mudar é a quantidade de csvs que vou ter (serão muitos). O script tem que incluir um, depois outro e outro, etc (laço de repetição, se não me engano).
As colunas que você montou no script, estão perfeitas. Vou testar.
Os dois últimos parágrafos são os meus 'calos'.
Tem como eu enviar uma imagem do resultado final?
Tem pouco tempo que estou escrevendo scripts. Pesquiso ali, aqui, acolá (rsrsrs), mas ainda sou inexperiente.
Obrigado mesmo pela ajuda.