Clima desde terminal


66

Quiero encontrar el clima actual de una ciudad en particular o mi ubicación desde la terminal. ¿Hay alguna aplicación de clima de línea de comandos?

Respuestas:


135

Simplemente ingrese lo siguiente en una terminal:

curl wttr.in

Y obtendrá su ubicación de /etc/timezone. De lo contrario curl wttr.in/your_location. Por ejemplo, para Teherán:

curl wttr.in/tehran

Lo que te da:

Salida de muestra

También puedes comparar dos ciudades:

diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )

El código fuente del desarrollador está disponible en Github .


2
Mucho mejor!
Zachary Dahan

2
github.com/schachmat/wego no es malo para el devsentre nosotros
Timo

me gustó, pero esta vez arrojó un error: Lo sentimos, en este momento nos estamos quedando sin consultas al servicio meteorológico. Recibiremos nuevas consultas lo antes posible.
Doyousketch2

17

Busque su ciudad en http://www.accuweather.com y reemplace la URL en el siguiente script con la URL de su ciudad:

#!/bin/sh

URL='http://www.accuweather.com/en/de/berlin/10178/weather-forecast/178087'

wget -q -O- "$URL" | awk -F\' '/acm_RecentLocationsCarousel\.push/{print $2": "$16", "$12"°" }'| head -1

Salida de muestra:

Berlin, Germany: Foggy, 1°

Pero, ¿cómo lo cambio a Celcius?
dat tutbrus

En la fuente html, ya veo acm_RecentLocationsCarousel.push({name:"Berlin, Germany", daypart:'day', href:'/en/de/berlin/10178/weather-forecast/178087', icon:'i-6-l', bg:'c', temp:'0', realfeel:'-6', text:"Mostly cloudy"});. Usando su código, el awkseparador de campo es '' (espacio). ¿Es $12(temperatura) la 12ª columna?
Timo

Mi culpa es el awkseparador '. La API utiliza 2 números, el primero es el postleitzahlcódigo postal o. El segundo parece ser un número de código de API
Timo

1
Ya no funciona, ¿ha cambiado la API de Accuweather?
Timo

14

Tengo un camino más.

Abra su .bashrcarchivo y luego pegue este código en la parte inferior

weather(){ curl -s "http://api.wunderground.com/auto/wui/geo/ForecastXML/index.xml?query=${@:-<YOURZIPORLOCATION>}"|perl -ne '/<title>([^<]+)/&&printf "%s: ",$1;/<fcttext>([^<]+)/&&print $1,"\n"';}

Luego guarda y cierra tu .bashrcarchivo.

ahora escriba bashpara actualizar el archivo.

luego escribe

weather <location name>

por ejemplo

august@august-OEM:~$ weather guntur
December 14, 2013: Clear. High 31&amp;deg;C (87&amp;deg;F). Winds 0 kph North
December 15, 2013: Clear. High 29&amp;deg;C (84&amp;deg;F). Winds 10 kph NNW
December 16, 2013: Clear. High 31&amp;deg;C (87&amp;deg;F). Winds 10 kph North
December 17, 2013: Clear. High 29&amp;deg;C (84&amp;deg;F). Winds 7 kph ENE
December 18, 2013: Scattered Clouds. High 29&amp;deg;C (84&amp;deg;F). Winds 3 kph ENE
December 19, 2013: Scattered Clouds. High 29&amp;deg;C (84&amp;deg;F). Winds 3 kph ENE

1
Agradable con el pronóstico del tiempo. +1 de mi parte
souravc

Esto ya no funciona, las últimas fechas que muestra son de mayo de 2015 (al menos para Ciudad del Cabo, Sudáfrica). Un examen más detallado de la salida xml revela que el padre txt_forecast no se ha actualizado desde mayo de 2015, mientras que el elemento simpleforecast parece tener los datos más recientes.
Zahir J

Actualizaré mi respuesta
rɑːdʒɑ

Reemplace YOUZIPORLOCATION con $ 1 si desea que el clima <nombre de ubicación> funcione
Ed Neville

Cuando reemplazo YOUZIPORLOCATIONcon $1y paso 20001(código postal de Washington, DC), obtengo líneas que se ven sin formato como Today: Mostly sunny and breezy. Highs in the upper 30s. Northwest winds 20 to 25 mph with gusts up to 45 mph.cuando uso "washington.dc", obtengo la salida de la tabla May 4, 2015: Clear. High 32&amp;deg;C (89&amp;deg;F). Winds 43 kph East. ¿Alguna idea de por qué la diferencia?
Blalterman

14

Aquí hay una gran utilidad de línea de comando semi-gráfica escrita en Go:

https://github.com/schachmat/wego/

Deberá instalar Go y configurar algunas cosas de API, pero las instrucciones están ahí. Aquí hay una foto de muestra:

ingrese la descripción de la imagen aquí


55
Esto se está alojando públicamente ahora, con mapeo de dirección IP a región. Prueba: curl -4 wttr.in
jschrab

2
@jschrab: Y no necesitas -4 en realidad. curl wttr.ines suficiente
Igor Chubin

Las unidades métricas también están disponibles en la versión alojada públicamente, así:curl wttr.in/Helsinki?m
Ville

6

Intenta usar

telnet rainmaker.wunderground.com

1
¿Esto parece ser solo de EE. UU.?
Vladimir Panteleev

5

Primero necesita instalar el paquete weather-util, para hacerlo simplemente presione Ctrl+ Alt+ Ten su teclado para abrir la Terminal. Cuando se abra, ejecute los siguientes comandos:

sudo apt-get install weather-util

Necesitará su código meteorológico local .

Después de la instalación puedes ejecutar weather -i <code>. El código que obtienes del enlace de arriba. Para obtener una lista de las opciones disponibles, puede ejecutar weatherInformación del clima


1
muestra Last updated Dec 11, 2013 - 07:00 AM EST / 2013.12.11 1200 UTC Temperature: 86 F (30 C). no hay manera de saber el clima actual.
Avinash Raj

Dependiendo de su ubicación, esa podría ser la información actual disponible.
Mitch

1
Acabo de probar esto y descubrí que es más fácil de usar ahora: weather YOURLOCATIONNAMEbusca tu ubicación y proporciona posiblemente múltiples resultados. A partir de estos, puede leer el identificador de la estación que puede usar como argumento para obtener su información meteorológica
Nicolas

Parece que el servicio del que depende ha sido descontinuado. Acabo de instalar la versión 2.0 y weather LAX(que debería mostrar el clima del Aeropuerto Internacional de Los Ángeles) muestra un error 404 para weather.noaa.gov/pub/data/observations/metar/decoded/KNKX.TXT
Keith Thompson

1
Ese archivo de datos en particular se ha movido de aquí para aquí . Debería ser posible actualizar los archivos de datos, cambiando cada aparición de http://weather.noaa.gov/pub/dataa http://tgftp.nws.noaa.gov/data. ACTUALIZACIÓN: Parece que ya lo arreglaron en la versión 2.1, que puede obtener desde el sitio del proyecto .
Keith Thompson el

5

ansiweather

AnsiWeather es un script de Shell para mostrar las condiciones climáticas actuales en su terminal, con soporte para colores ANSI y símbolos Unicode. Los datos meteorológicos provienen de la API meteorológica gratuita OpenWeatherMap.

sudo apt-get install ansiweather
ansiweather -l London,GB -f 3
London forecast => Sat Jan 13: 7/2 °C ☔ - Sun Jan 14: 4/1 °C ☔ - Mon Jan 15: 9/6 °C ☔

https://github.com/fcambus/ansiweather


2

también un programa que viene preinstalado con ubuntu llamado inxi le dará todo tipo de estadísticas en su computadora y generará información climática.

comando: inxi --help

comando: inxi -w

        Conditions: 82 F (28 C) - Clear Time: May 13, 10:52 AM CDT

comando: inxi -wxxx

     Conditions: 82 F (28 C) - Clear Wind: From the SW at 13 MPH Humidity: 60%

       Pressure: 29.99 in (1016 mb) Heat Index: 84 F (29 C)
       Location: city (USA) Altitude: 185 m
       Time: May 13, 10:52 AM CDT (America/Chicago) Observation Time: May 13, 9:54 AM CDT

Parece que inxi no es parte de ubuntu, a partir de 10,04, pero se puede instalar consudo apt install inxi
Starbuck

Sí, inxiestá disponible, pero primero debe habilitar el repositorio del universo.
mchid

2

Puedes comparar ciudades usando:

diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )

como se ilustra en la respuesta más votada. wttr.intambién hace una gran pantalla de "bienvenida" cada vez que abre el terminal. Haga esto agregándolo a su ~/.bashrcarchivo. Lo hice para incluir información sobre el clima, la fecha, la hora y la distribución como se detalla en esta respuesta: ¿Cómo puedo obtener esta pantalla de bienvenida de la terminal?

Bash Splash en Windows 10.png

Lo siento, estaba en Ubuntu en Windows 10 WSL para las actualizaciones de primavera de 2018 cuando capturé esta imagen. Prometo que volveré a Ubuntu en Linux pronto.


2

Para obtener información meteorológica aún más corta, http://weather.tuxnet24.de proporciona datos meteorológicos de Yahoo! en formato de texto y xml.

Los archivos del XML se pueden obtener con un analizador XML como xmllint, es decir.

Escribí un script de búsqueda de clima para preguntas y respuestas, que obtiene la temperatura actual y la descripción del clima, luego almacena un símbolo unicode correspondiente a la descripción y lo muestra como

☂ 6 ° C

Actualizo regularmente a través de cronjob y luego uso la salida en el estado de mi bandeja.

Obtenga su identificación en yahoocom / news / weather. Cambie la ubicación a la ubicación deseada y busque la ID en la URL (es decir, si la URL es yahoocom / news / weather / germany / north-rhine-westphalia / bielefeld-20066057, la ID es 20066057).

El XML contiene más campos, es decir, datos de pronóstico, viento, etc. - también puede analizarlos, si lo desea.

Desafortunadamente, algunos símbolos meteorológicos no están representados en Ubuntufont ... siéntase libre de ajustar.

Aquí está mi script (reemplace 20066057 con su ID si no vive en Bielefeld), depende de bash, curl y xmllint.

#!/bin/sh
#☁☂☔❄❅❆☃ ☀☁☂⚡⚐☼

# write xml to variable
w_xml=$(curl -Ls "http://weather.tuxnet24.de/?id=20066057&mode=xml");
# get fields from xml via xmllint | xargs for trimming
# weather description
w_txt=$(xmllint --xpath "string(//current_text)" - <<<"$w_xml" | xargs);
# temperature | remove spaces from text (&#176;C prepended by space)
w_tpc=$(xmllint --xpath "string(//current_temp)"  - <<<"$w_xml" | xargs); w_tpc=${w_tpc//[[:blank:]]/};
# further fields not used atm
# w_tph=$(xmllint --xpath "string(//current_temp_high)"  - <<<"$w_xml" | xargs);
# w_tpl=$(xmllint --xpath "string(//current_temp_low)"  - <<<"$w_xml" | xargs);

# set $w_sym according to $w_txt
if   [ "$w_txt" == "Sunny" ]; then w_sym="☼";
elif [ "$w_txt" == "Mostly Sunny" ]; then w_sym="☼";
elif [ "$w_txt" == "Showers" ]; then w_sym="☂";
elif [ "$w_txt" == "Clear" ]; then w_sym="☾";
elif [ "$w_txt" == "Thunderstorms" ]; then w_sym="⚡";
elif [ "$w_txt" == "Scattered Thunderstorms" ]; then w_sym="☔";
elif [ "$w_txt" == "Isolated Thundershovers" ]; then w_sym="☔";
elif [ "$w_txt" == "Cloudy" ]; then w_sym="☁";
elif [ "$w_txt" == "Mostly Cloudy" ]; then w_sym="☁";
elif [ "$w_txt" == "Partly Cloudy" ]; then w_sym="☼☁";
elif [ "$w_txt" == "Breezy" ]; then w_sym="⚐";
# if unknown text, set text instead of symbol
else w_sym=$w_txt; 
fi
# output <symbol><space><temp-in-°C>
echo "$w_sym"" ""$w_tpc";

error inesperado de redirección
Philip Kirkbride

Cambiar shebang a #!/usr/bin/env basharreglado para mí, Ubuntu 18.04
Philip Kirkbride

2

Tengo un camino más.

Abra su archivo .bashrc y luego pegue este código en la parte inferior

test -f ~/.wttr.in || curl -sk wttr.in -o ~/.wttr.in
find ~ -maxdepth 1 -name .wttr.in -cmin +5 -exec curl -sk wttr.in -o ~/.wttr.in \;
head -7 ~/.wttr.in | tail -5
W(){ find ~ -maxdepth 1 -name .wttr.in -cmin +5 -exec curl -sk wttr.in -o ~/.wttr.in \;; head -27 ~/.wttr.in; }

Guarde y cierre su .bashrcarchivo y ejecute el siguiente comando para actualizar bash:

. .bashrc 

luego escriba Wmayúscula


bash: W: comando no encontrado

Después de editar .bashrc relogin
sergkog

No tiene que volver a iniciar sesión si "obtiene" su .bashrcarchivo. Puede ejecutar: source .bashrco puede ejecutar esto en su lugar:. .bashrc
mchid

0

Aunque la solución accuweather curl es bastante buena, necesitaba algo más informativo, así que creé un script bash simple que extrae información para las próximas 4 horas del sitio web weather.com. Como en el ejemplo anterior, debe modificar el enlace para su ubicación.

Example output:
$ ./getWeather.sh
Temperature for 1 AM : 65&deg;F and outside should be: Partly - Cloudy FEELS LIKE:   65&deg;
Temperature for 2 AM : 65deg;F and outside should be: Partly - Cloudy FEELS LIKE: 65deg;
Temperature for 3 AM : 63deg; and outside should be: Partly - Cloudy FEELS LIKE: 63deg;
Temperature for 4 AM : 62deg; and should be: Mostly - Clear FEELS LIKE: 62deg;

La secuencia de comandos completa se encuentra en: https://sites.google.com/site/wozoopalinux/home/wzbash001/get-weather-information-from-command-line-for-next-4-hrs


0

Meteograma de todas las ciudades principales del mundo.

finger city_name@graph.no

$ finger cologne@graph.no

           -= Meteogram for germany/north_rhine-westphalia/cologne =-           
 'C                                                                   Rain
 16                                                                   
 15                           ^^^                                     
 14                  ======^^^   ^^^                                  
 13               ===               ^^^===^^^===                      
 12                                             =========             
 11            ===                                       ====--       
 10      ======                                                ---    
  9=====|                                                         --- 3 mm 
  8     |  |                                                          2 mm 
  7  |  |  |  |  |  |  |  |              |     |  |  |  |  |          1 mm 
   _08_09_10_11_12_13_14_15_16_17_18 19 20 21 22 23 00 01 02 03 04 05 Hour

    SE SE SE SE SE SW SW  W  W  W  W SW  W  W  W  W  W NW NW NW  N  N Wind dir.
     5  5  5  5  4  4  5  6  6  6  5  5  5  4  4  5  5  5  4  3  3  3 Wind(mps)

Legend left axis:   - Sunny   ^ Scattered   = Clouded   =V= Thunder   # Fog
Legend right axis:  | Rain    ! Sleet       * Snow
[Weather forecast from yr.no, delivered by the Norwegian Meteorological Institute and the NRK.]

Aquí está cómo usarlo:

$ finger help@graph.no

yr.no is having technical problems, or you specified an unknown location.

Usage:

 * finger <city name>@graph.no (world weather forecast, no spaces)
   Example: finger newyork@graph.no 

 Advanced usage:

 * finger o:<city name>@graph.no (a one-line forecast)
   Example: finger o:newyork@graph.no 

 * finger ^<city name>@graph.no (Imperial units)
   Example: finger ^newyork@graph.no 

 * finger <city name>+5@graph.no (forecast from 5 hrs ahead in time (max:26))
   Example: finger northpole+5@graph.no 

 * finger <city name>~160@graph.no (set screen width)
   Example: finger southpole~160@graph.no 

 * finger <city name>%2@graph.no (forecast for every second hour [Norway])
   Example: finger oslo%2@graph.no 

 * finger <post code>@graph.no (norwegian weather forecast)
   Example: finger 0458@graph.no 

 Other: 

 * finger news@graph.no (latest headlines from NRK)
 * finger time@graph.no (server local time)
 * finger date@graph.no (server local date)
 * finger about@graph.no (contact information)

International names comes from http://fil.nrk.no/yr/viktigestader/verda.txt.

La historia detrás de esto del desarrollador.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.