Script das estações

1. Script das estações

carlos eduardo da silva braga
cadu405

(usa Outra)

Enviado em 26/04/2020 - 18:31h

Boa tarde, estou tentando realizar um exercício de shell script, no qual eu tenho que desenvolver um script que exiba a estação do ano conforme a data do sistema, estou com bastante dificuldade pois sou iniciante no linux, e em shell etc. Alguém poderia me dizer o que tem de errado?

mes=$($date +%m)
dia=$($date +%d)
if [ $mes -ge 04 ] && [ $dia -ge 21] || [ $mes -le 06 ] && [ $dia -le 21 ]
then
echo "outono"
elif [ $mes -ge 06 ] && [ $dia -ge 21 ] || [ $mes -le 09 ] && [ $dia -le 23 ]
then
echo "inverno"
elif [ $mes -ge 09 ] && [ $dia -ge 22 ] || [ $mes -le 12 ] && [ $dia -le 22 ]

then
echo "primavera"
elif [ $mes -ge 12 ] && [ $dia -ge 21 ] || [ $mes -le 04 ] && [ $dia -le 21 ]
then
echo "verão"
fi





  


2. Re: Script das estações

Paulo
paulo1205

(usa Ubuntu)

Enviado em 26/04/2020 - 18:50h

O problema não parece ser com o shell ou com o Linux, mas sim com os testes condicionais que você está usando. A sintaxe está correta, mas as condições lógicas estão erradas.

Eu tenho por hábito evitar entregar as respostas de bandeja, então vou dar algumas dicas em forma de pergunta.

  • Existem meses que, uma vez identificados, dispensem o teste do valor do dia? Se existem, onde isso aparece no seu código?

  • Para meses que contenham mais de uma estação, qual seria a forma certa de determinar qual delas deve ser apresentada?

Espero ter sido útil.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


3. Re: Script das estações

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/04/2020 - 21:06h


cadu405 escreveu:

Boa tarde, estou tentando realizar um exercício de shell script, no qual eu tenho que desenvolver um script que exiba a estação do ano conforme a data do sistema, estou com bastante dificuldade pois sou iniciante no linux, e em shell etc. Alguém poderia me dizer o que tem de errado?

mes=$($date +%m)
dia=$($date +%d)
if [ $mes -ge 04 ] && [ $dia -ge 21] || [ $mes -le 06 ] && [ $dia -le 21 ]
then
echo "outono"
elif [ $mes -ge 06 ] && [ $dia -ge 21 ] || [ $mes -le 09 ] && [ $dia -le 23 ]
then
echo "inverno"
elif [ $mes -ge 09 ] && [ $dia -ge 22 ] || [ $mes -le 12 ] && [ $dia -le 22 ]

then
echo "primavera"
elif [ $mes -ge 12 ] && [ $dia -ge 21 ] || [ $mes -le 04 ] && [ $dia -le 21 ]
then
echo "verão"
fi

Além do exposto pelo "Paulo1205",
Existem dias, nos quais ocorrem a "mudança" da Estação....
E, Depende do horário, a estação é diferente.....
Logo, deve-se considerar a Hora, minuto.....
Veja:
https://www.iag.usp.br/astronomia/inicio-das-estacoes-do-ano
Para facilitar o condicional,
Eu utilizaria o "Unix Time stamp".
date +%s
.....
_____________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


4. código

carlos eduardo da silva braga
cadu405

(usa Outra)

Enviado em 28/04/2020 - 15:59h

Tem alguma forma de fazer em que eu deixe as estações predefinidas ? do modo que estou fazendo não está dando certo.


5. Re: Script das estações

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/04/2020 - 18:16h

cadu405 escreveu:

Tem alguma forma de fazer em que eu deixe as estações predefinidas ? do modo que estou fazendo não está dando certo.

Boa tarde Cadu.
Você deve comparar a DATA ATUAL com a DATA de INICIO da ESTAÇÃO
Fiz aqui, funciona a contento,
Para cada ESTAÇÃO, criei uma variável,
com o Unix Time Stamp.
Exemplo da var:
Outono=$(date -d"2020-03-dia hora:minuto:00" +%s)
dia, hora e minuto, são obtidos do site:
https://www.iag.usp.br/astronomia/inicio-das-estacoes-do-ano
Com o "lynx+filtros, baixo os dados do site citado:
cat dados.txt

2005 20 09 34 21 03 46 22 19 23 21 15 35
2006 20 15 26 21 09 26 23 01 03 21 21 22
2007 20 21 07 21 15 06 23 06 51 22 03 08
2008 20 02 48 20 20 59 22 12 44 21 09 04
2009 20 08 44 21 02 45 22 18 18 21 14 47
2010 20 14 32 21 08 28 23 00 09 21 20 38
2011 20 20 21 21 14 16 23 06 04 22 02 30
2012 20 02 14 20 20 09 22 11 49 21 08 11
2013 20 08 02 21 02 04 22 17 44 21 14 11
2014 20 13 57 21 07 51 22 23 29 21 20 03
2015 20 19 45 21 13 38 23 05 20 22 01 48
2016 20 01 30 20 19 34 22 11 21 21 07 44
2017 20 07 29 21 01 24 22 17 02 21 13 28
2018 20 13 15 21 07 07 22 22 54 21 19 23
2019 20 18 58 21 12 54 23 04 50 22 01 19
2020 20 00 50 20 18 44 22 10 31 21 07 02

O Usuário informa: ANO-MES-DIA hh:mm:,
Busco o ANO em dados.txt, gero as variáveis das estações,
e faço o condicional, comparando a data informada, com a das estações.....
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


6. Re: Script das estações

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 29/04/2020 - 23:24h

Boa noite Cadu, e o script das estações do ano, consegui?
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


7. Re: Script das estações

Paulo
paulo1205

(usa Ubuntu)

Enviado em 01/05/2020 - 16:04h

Que droga!

Eu havia escrito uma resposta relativamente longa condensando algumas informações que eu li a respeito de estações do ano, variações na duração observável do ano em função da data de referência e fatores astronômicos, duração média do ano, e outros assuntos que eu não conhecia mas acabei estudando em função deste tópico, mas, na hora de enviar a mensagem, o VoL pediu que eu fizesse login de novo, e, depois do login, caiu numa página de erro 404, e eu perdi tudo o que havia escrito!

Pior de tudo que esses erros são recorrentes, e eu ainda não criei o hábito de selecionar tudo e fazer um copy antes de enviar...

Na mensagem que eu escrevera, eu detalhara também um algoritmo que, dadas certas limitações de precisão decorrentes de fatores astronômicos que variam a cada ano, permite calcular com erro razoável (i.e. dentro de uma faixa de aproximadamente ±30min) as estações do ano, tomando como base um ano de referência, a duração média desse ano e os instantes de início de cada estação nesse ano, e fazendo operações com esses valores de referência em relação a uma data/hora de interesse, para determinar a estação em que tal data/hora se encontra.

Todo esse texto foi perdido. Contudo, em outra janela eu estava fazendo uma implementação em Perl do algoritmo, e vi que ela teve resultados interessantes, que confirmam, inclusive, o erro relativamente pequeno mencionado acima. Quando ela ficar pronta, se alguém tiver interesse, posso postar aqui.

Como referência do que eu usei para aprender a respeito dos assuntos mencionados na mensagem perdida, seguem alguns links:

  • https://en.wikipedia.org/wiki/Year#Gregorian_calendar
  • https://en.wikipedia.org/wiki/Tropical_year
  • https://en.wikipedia.org/wiki/Axial_precession
  • https://en.wikipedia.org/wiki/Astronomical_nutation
  • https://www.timeanddate.com/calendar/seasons.html?year=2000&n=161


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


8. Re: Script das estações

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 01/05/2020 - 19:14h

paulo1205 escreveu:

Que droga!

Eu havia escrito uma resposta relativamente longa condensando algumas informações que eu li a respeito de estações do ano, variações na duração observável do ano em função da data de referência e fatores astronômicos, duração média do ano, e outros assuntos que eu não conhecia mas acabei estudando em função deste tópico, mas, na hora de enviar a mensagem, o VoL pediu que eu fizesse login de novo, e, depois do login, caiu numa página de erro 404, e eu perdi tudo o que havia escrito!

Pior de tudo que esses erros são recorrentes, e eu ainda não criei o hábito de selecionar tudo e fazer um copy antes de enviar...

Na mensagem que eu escrevera, eu detalhara também um algoritmo que, dadas certas limitações de precisão decorrentes de fatores astronômicos que variam a cada ano, permite calcular com erro razoável (i.e. dentro de uma faixa de aproximadamente ±30min) as estações do ano, tomando como base um ano de referência, a duração média desse ano e os instantes de início de cada estação nesse ano, e fazendo operações com esses valores de referência em relação a uma data/hora de interesse, para determinar a estação em que tal data/hora se encontra.

Todo esse texto foi perdido. Contudo, em outra janela eu estava fazendo uma implementação em Perl do algoritmo, e vi que ela teve resultados interessantes, que confirmam, inclusive, o erro relativamente pequeno mencionado acima. Quando ela ficar pronta, se alguém tiver interesse, posso postar aqui.

Como referência do que eu usei para aprender a respeito dos assuntos mencionados na mensagem perdida, seguem alguns links:

  • https://en.wikipedia.org/wiki/Year#Gregorian_calendar
  • https://en.wikipedia.org/wiki/Tropical_year
  • https://en.wikipedia.org/wiki/Axial_precession
  • https://en.wikipedia.org/wiki/Astronomical_nutation
  • https://www.timeanddate.com/calendar/seasons.html?year=2000&n=161


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)

Isso já ocorreu comigo, fique muito P...... da vida.....
Para ocupar o tempo, fiz o script,
Segui a sua sugestão de "testar somente se no mês ocorre a mudança de estação"...

#/bin/bash
clear;
var0=',$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13';
form='%s:%s:%s\n%s:%s:%s\n%s:%s:%s\n%s:%s:%s\n';
EST="Out,Inv,Pri,Ver";
url="https://www.iag.usp.br/astronomia/inicio-das-estacoes-do-ano";
dest="estacoes.txt";

line(){ printf "%40s" ''|tr ' ' '-';}

mes=$(date +%m);
#read -n2 -p "Informe o Mês: " mes ##Retire o comentário, para testar com um Mês diferente do corrente

case ${mes} in
0[12]) stt="Verão";;
0[45]) stt="Outono";;
0[78]) stt="Inverno";;
1[01]) stt="Primavera";;
0[369]|12) stt="Calcular";;
esac;

[[ ${stt} != "Calcular" ]] && { echo -e "\n$(line)\nMês:$mes\nEstação: ${stt}\n$(line)\n";exit 1; }
ini=$(date +%s.%N);
echo -e "\n$(line)\nCalculando:\nIni:[$ini]"

#Gera arq com as Datas de Início das estações.
ano=$(date +%Y);
[ ! -e ${dest} ] && lynx -accept_all_cookies -dump $url|awk '/^ +'${ano}' /{printf "'${form}'" '${var0}'}' > ${dest}

hoje=$(date +%s);

#Gera as variáveis das estações.
eval $(awk -F":" 'BEGIN{split("'${EST}'",est, ",")} {print est[NR]"=$(date -d \""'${ano}'"-0"(NR*3)"-"$1,$2":"$3":00\" +%s)"}' ${dest});
#echo -e "\n$(line)\nOut: $Out => $(date -d"@$Out")\nInv: $Inv => $(date -d"@$Inv")\nPri: $Pri => $(date -d"@$Pri")\nVer: $Ver => $(date -d"@$Ver")\n$(line)"
if (($hoje >= $Ver || $hoje < $Out ));then stt="Verão"
elif (($hoje >= $Pri && $hoje < $Ver));then stt="Primavera"
elif (($hoje >= $Inv && $hoje < $Pri));then stt="Inverno"
elif (($hoje >= $Out && $hoje < $Inv));then stt="Outono"
fi
fin=$(date +%s.%N);
tempo=$(awk '{printf "%.9f" ,($1-$2)}' <<< "$fin $ini");
echo -e "Fim:[${fin}]\nTempo:[$tempo]\n$(date -d"@${hoje}" +%x' as '%X).\nEstação: $stt\n$(line)\n"


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________


9. consegui

carlos eduardo da silva braga
cadu405

(usa Outra)

Enviado em 13/05/2020 - 01:29h

msoliver escreveu:

Boa noite Cadu, e o script das estações do ano, consegui?
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________

consegui, parcialmente ainda não implementei as horas e os minutos.
mes=$(date +%m)
echo "MÊS:$mes"
dia=$(date +%d)
echo "DIA:$dia"

if [ $mes -ge 03 ] && [ $dia -le 20 ] || [ $mes -eq 04 ] || [ $mes -eq 05 ] || [ $mes -eq 06 ] && [ $dia -le 20 ] ;then
echo "outono"
elif [ $mes -ge 06 ] && [ $dia -le 20 ] || [ $mes -eq 07 ] || [ $mes -eq 08 ] || [ $mes -eq 09 ] && [ $dia -le 22 ];then
echo "Inverno"
elif [ $mes -ge 09 ] && [ $dia -le 22 ] || [ $mes -eq 10 ] || [ $mes -eq 11 ] || [ $mes -eq 12 ] && [ $dia -le 21 ];then
echo "primavera"
elif [ $mes -ge 12 ] && [ $dia -le 21 ] || [ $mes -eq 01 ] || [ $mes -eq 02 ] || [ $mes -eq 03 ] && [ $dia -eq 20 ];then
echo "verão"



10. Re: Script das estações

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 13/05/2020 - 18:54h


cadu405 escreveu:

msoliver escreveu:

Boa noite Cadu, e o script das estações do ano, consegui?
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________

consegui, parcialmente ainda não implementei as horas e os minutos.
mes=$(date +%m)
echo "MÊS:$mes"
dia=$(date +%d)
echo "DIA:$dia"

if [ $mes -ge 03 ] && [ $dia -le 20 ] || [ $mes -eq 04 ] || [ $mes -eq 05 ] || [ $mes -eq 06 ] && [ $dia -le 20 ] ;then
echo "outono"
elif [ $mes -ge 06 ] && [ $dia -le 20 ] || [ $mes -eq 07 ] || [ $mes -eq 08 ] || [ $mes -eq 09 ] && [ $dia -le 22 ];then
echo "Inverno"
elif [ $mes -ge 09 ] && [ $dia -le 22 ] || [ $mes -eq 10 ] || [ $mes -eq 11 ] || [ $mes -eq 12 ] && [ $dia -le 21 ];then
echo "primavera"
elif [ $mes -ge 12 ] && [ $dia -le 21 ] || [ $mes -eq 01 ] || [ $mes -eq 02 ] || [ $mes -eq 03 ] && [ $dia -eq 20 ];then
echo "verão"

Cadu, boa noite.
Ao invés de "criar" 4 variáveis (Dia, Mês, Hora e Minuto), e fazer o condicional,
Crie uma só, que é a data no formato Unix Time Stamp, que tem todas as informações.
Para criar, use o date ou o gawk (mais complicado).
Com o date:
outono=$(date -d"2020-03-20 00:50:00" +%s)
echo ${outono}
1584676200
Com o gawk:
gawk '{printf "%s\n" ,mktime($1" "$2" "$3" "$4" "$5" "$6)}' <<< "2020 03 20 00 50 00"
1584676200

______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


11. Re: Script das estações

Paulo
paulo1205

(usa Ubuntu)

Enviado em 17/05/2020 - 08:44h

paulo1205 escreveu:

Contudo, em outra janela eu estava fazendo uma implementação em Perl do algoritmo, e vi que ela teve resultados interessantes, que confirmam, inclusive, o erro relativamente pequeno mencionado acima. Quando ela ficar pronta, se alguém tiver interesse, posso postar aqui.


Segue a tal implementação. Ela faz contas a partir dos horários de referência para início de cada estação do ano no ano 2000 e da duração média do ano tropical, calculando para os anos subsequentes com base em extrapolação dos valores.

Conferindo com uma tabela impressa, vi que os erros ficaram na faixa de ±1h, o que eu acho que deve dar para o gasto. Afastando muito do ano de referência os erros devem ficar maiores.

#!/usr/bin/perl

# Em resposta a https://www.vivaolinux.com.br/topico/Shell-Script/Script-das-estacoes/
#
# Outros links, que serviram como referência:
# • https://en.wikipedia.org/wiki/Year#Gregorian_calendar
# • https://en.wikipedia.org/wiki/Tropical_year
# • https://en.wikipedia.org/wiki/Axial_precession
# • https://en.wikipedia.org/wiki/Astronomical_nutation
# • https://www.timeanddate.com/calendar/seasons.html?year=2000&n=161


use strict;
use POSIX;


use vars qw($T0 $TEM $TSJ $TES $TSD $SECONDS_IN_YEAR);


BEGIN {
# Altera temporariamente o fuso-horário para poder fixar UTC como referência.
my $saved_timezone=$ENV{TZ};
$ENV{TZ}="UTC";
tzset();

# Tempo de referência: 2000/01/01 00:00:00 UTC.
$T0=mktime(0, 0, 0, 1, 0, 100);

# Tempos relativos das efemérides no ano 2000 (todos os relógios em UTC).
$TEM=mktime(0, 35, 7, 20, 2, 100)-$T0; # Equinócio de março (2000/03/20 07:35)
$TSJ=mktime(0, 47, 1, 21, 5, 100)-$T0; # Solstício de junho (2000/06/21 01:47)
$TES=mktime(0, 27, 17, 22, 8, 100)-$T0; # Equinócio de setembro (2000/09/22 17:27)
$TSD=mktime(0, 37, 17, 21, 11, 100)-$T0; # Solstício de dezembro (2000/12/21 17:37)

# Duração do ano tropical médio no ano 2000.
#$days_in_year=365.2421896698;
$SECONDS_IN_YEAR=86400*365.2421896698;

# Restaura fuso-horário padrão.
if(defined($saved_timezone)){
$ENV{TZ}=$saved_timezone;
}
else{
delete($ENV{TZ});
}
tzset();
}


# Função que informa a estação aproximada, assumindo as referências do ano
# 2000 para as estações em cada ano. Isso tem erros, por causa dos movimentos
# de precessão (mais ou menos previsível) e nutação (mensurável, mas pouco
# previsível) da Terra e movimentos do próprio Sol, mas esse erro, dentro de
# intervalo pequeno de anos (por exemplo, menor que uns 50 anos) deve ficar
# dentro da faixa de ±60min.
#
# A função recebe o timestamp da hora de interesse (nº de segundos decorridos
# desde 1970/01/01 00:00:00 UTC, que é o formato padrão do UNIX e do C).
sub tell_season ($) {
my ($t_user)[email protected]_;
my ($n_years, $year_offset);

$n_years=($t_user-$T0)/$SECONDS_IN_YEAR;
$year_offset=($n_years-floor($n_years))*$SECONDS_IN_YEAR;

return "verão" if $year_offset<$TEM || $year_offset>=$TSD;
return "outono" if $year_offset<$TSJ;
return "inverno" if $year_offset<$TES;
return "primavera";
}


# Mostra o modo de uso do programa.
sub usage (\*) {
my ($out)[email protected]_;
print $out <<EOM;
Modo de uso: $0 [-H] ( -t | ( -p | -v | -o | -i ) AAAA | [data] )

-h | --help Mostra esta tela de ajuda.
-H Imprime a hora, além da data.
-t Imprime tabela com início de cada estação desde 2000 até 2050.
-p AAAA Mostra início da primavera no ano AAAA.
-v AAAA Mostra início do verão no ano AAAA.
-o AAAA Mostra início do outono no ano AAAA.
-i AAAA Mostra início do inverno no ano AAAA.
data Mostra a estação na data informada (default: data corrente).

Caso o campo "data" seja usado, ele deve estar no formato
[AAAA/]mm/dd[ HH:MM[:SS]]. Se o ano for omitido, assume-se o corrente.
Se a hora for omitida, assume-se 12:00. Se os segundos forem omitidos,
assume-se 00.

Para evitar grandes erros de precisão, os anos informados devem estar entre
2000 e 2050.
EOM
}


#################### PROGRAMA PRINCIPAL ####################
my ($table, $season, $year, $ts_fmt, $date);
$ts_fmt="%m/%d";
my @[email protected];
my $arg;
while(defined($arg=shift(@args))){
if($arg eq "-h" || $arg eq "--help"){
usage(*STDOUT);
exit(0);
}
if($arg eq "-H"){
$ts_fmt="%m/%d %H:%M";
next;
}
if(!$table && !$season && !$date){
if($arg eq "-t"){
$table=1;
next;
}
if($arg eq "-p"){
$season=$TES;
}
elsif($arg eq "-v"){
$season=$TSD;
}
elsif($arg eq "-o"){
$season=$TEM;
}
elsif($arg eq "-i"){
$season=$TSJ;
}
if($season){
if(!($year=shift(@args)) || $year=~/\D/){
usage(*STDERR);
exit(1);
}
$year-=2000;
next;
}
if($arg=~/^((\d+)\/)?(0?[1-9]|1[012])\/(0?[1-9]|[12]\d|3[01])(\s+([01]?\d|2[0-3]):([0-5]?\d)(:([0-5]?\d|6[01]))?)?$/){
my ($sec, $min, $hour, $day, $mon, $year);
$sec=defined($9)? $9: 0;
$min=defined($5)? $7: 0;
$hour=defined($5)? $6: 12;
$day=$4;
$mon=$3-1;
$year=defined($1)? $2-1900: (localtime(time()))[5];
$date=mktime($sec, $min, $hour, $day, $mon, $year);
next;
}
}
usage(*STDERR);
exit(1);
}

if($table){
for(
my ($to, $ti, $tp, $tv)=($TEM+$T0, $TSJ+$T0, $TES+$T0, $TSD+$T0);
$to<=$T0+50*$SECONDS_IN_YEAR;
$to+=$SECONDS_IN_YEAR, $ti+=$SECONDS_IN_YEAR, $tp+=$SECONDS_IN_YEAR, $tv+=$SECONDS_IN_YEAR
){
print
strftime("%Y: $ts_fmt", localtime($to)),
strftime(" | $ts_fmt", localtime($ti)),
strftime(" | $ts_fmt", localtime($tp)),
strftime(" | $ts_fmt\n", localtime($tv))
;
}
}
elsif($season){
print strftime("%Y/$ts_fmt\n", localtime($T0+$season+$year*$SECONDS_IN_YEAR));
}
else{
$date=time() unless defined($date);
print strftime("%Y/$ts_fmt: ", localtime($date)), tell_season($date), "\n";
}

exit(0);



... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts