LINUX.ORG.RU

sh нет доступа


0

1

nano /go/name.sh

time=$(date +%H)

URL="http://informer.gismeteo.ru/xml/27719_1.xml"
EXEC="/usr/bin/curl -s"

a=`$EXEC $URL`

#температура
echo $a | tr "/>" "\n" | grep HEAT | sed -n 1p | sed -e 's/<HEAT //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
sed -e 's/ /../' | gawk '{ print "Темп.",$1,"°C" }'
сохранил

$/go/name.sh нет доступа #/go/name.sh нет доступа Почему?


> нет доступа Почему?
1) не хватает первой строки #!/bin/bash
2) chmod +x /go/name.sh

И да, изучите ABSG и регулярные выражения.

AITap ★★★★★
()
Ответ на: комментарий от mrXorg

Да не так же!

1) /go/name.sh:

#!/bin/sh
GET="wget -qO-"
URL="http://informer.gismeteo.ru/xml/27719_1.xml"
$GET $URL | sed -nr '/HEAT/{s/.*min="([0-9]+)" max="([0-9]+)".*/Темп. \1..\2°C/;p;q}'

Обратите внимание на первую строку.

2) Выполните chmod a+x /go/name.sh

3) Теперь можно запускать /go/name.sh

AITap ★★★★★
()
Ответ на: комментарий от mrXorg

Потому что это стандарт такой. В первой строчке исполняемого файла, если это скрипт, должен быть указан путь к интерпретатору, следующий за символами «#!».
Обязательно прочтите http://en.wikipedia.org/wiki/Shebang_(Unix) и Advanced Bash Scripting Guide.

AITap ★★★★★
()
Ответ на: комментарий от mrXorg

Постараюсь перевести, если покажете расшифровку этой страницы (прогноз погоды на обычной веб-странице gismeteo).

А ещё можно не мучаться и читать сразу RSS-новости для этого города.

AITap ★★★★★
()
Ответ на: комментарий от Axon

Спасибо конешно, но я умру если буду изучать все это. Мне ща главное С++, а это если время будет...

Постараюсь перевести, если покажете расшифровку этой страницы

попробую поискать

RSS-новости

как? про дождь будет написано? Я просто conky использую, чтобы по минимуму напрягать систему...

mrXorg
() автор топика
Ответ на: комментарий от mrXorg

> как?
Например, для conky:
rss uri interval_in_minutes action (num_par (spaces_in_front))
Download and parse RSS feeds. The interval may be a floating point value greater than 0, otherwise defaults to 15 minutes. Action may be one of the
following: feed_title, item_title (with num par), item_desc (with num par) and item_titles (when using this action and spaces_in_front is given conky
places that many spaces in front of each item). This object is threaded, and once a thread is created it can't be explicitly destroyed. One thread will
run for each URI specified. You can use any protocol that Curl supports.

Например, для Москвы: http://informer.gismeteo.ru/rss/27612.xml

AITap ★★★★★
()
Ответ на: комментарий от mrXorg
#!/bin/sh
GET="wget -qO-"
URL="http://informer.gismeteo.ru/xml/27719_1.xml"
$GET $URL | sed -nr '/PHENOMENA/{s/.*cloudiness="([0-9]+)".*/\1/;s/4/дождь/;s/5/ливень/;s/6/снег/;s/7/снег/;s/8/гроза/;s/9/нет данных/;s/10/без осадков/;s/^/Осадки: /;p};/HEAT/{s/.*min="([0-9]+)" max="([0-9]+)".*/Темп. \1..\2°C/;p;q}'

Теперь читаем ещё и облачность/осадки. Значения для 1..3 неизвестны.

AITap ★★★★★
()
Ответ на: комментарий от AITap

не понял(( rss uri 15 (что делает какой action? мне надо чтобы только температуру и осадки показывало) ( (num_par (spaces_in_front)) - что тут надо я не понял ))

mrXorg
() автор топика
Ответ на: комментарий от AITap

я те наврал((( $cloudiness = array('ясно', 'малооблачно', 'облачно', 'пасмурно'); $precipitation = array(4=>'дождь', 5=>'ливень', 6=>'снег', 7=>'снег', 8=>'гроза', 9=>'нет данных', 10=>'без осадков');

это был precipitation

mrXorg
() автор топика
Ответ на: комментарий от AITap

Кстати погоду неверно показывает(((

Объясните плиз, как через Rss сделать? Чтобы только температуру, облачность, осадки показывало?

mrXorg
() автор топика
Ответ на: комментарий от mrXorg
$ lynx -dump http://www.gismeteo.ru/city/daily/4368 | awk '/Погода за окном/ {f=1}; f==1 {print}; /Прогноз/ && f==1 {exit}'

Погода за окном

Москва

   [49]Московская область / [50]Россия

          Пасмурно, сильный дождь

   +15°C
   746мм рт.ст.

   З
          1м/с

   99%
   11.08.2011 9:00:00 [51]Прогноз
sdio ★★★★★
()
Ответ на: комментарий от mrXorg

когда я в конки зафигачил, он мне текстом просто все вывел, попробывал запустить скриптом пишет «line 2 , команда не найдена» (line 1 - #!/bin/sh)

mrXorg
() автор топика
Ответ на: комментарий от sdio

просто не хочется мне лишнего ничего, как ты не понимаешь...

установил,работает, можешь объяснить, как сделать чтобы он выводил только нужные мне данные?

mrXorg
() автор топика
Ответ на: комментарий от mrXorg

уродливо смотрится очень, как сделать чтобы выводил только температуру облачность и осадки?

mrXorg
() автор топика
Ответ на: комментарий от mrXorg

> не понял(( rss uri 15 (что делает какой action? мне надо чтобы только температуру и осадки показывало) ( (num_par (spaces_in_front)) - что тут надо я не понял ))
Прочитайте уже man conky. Я эти тексты на английском не сам выдумываю.

Пример для Москвы, с интервалом в 1 минуту и показом первого доступного прогноза (в самой rss-ке их больше 1):

${rss http://informer.gismeteo.ru/rss/27612.xml 1 item_desc 1}
http://ompldr.org/vOXVsOA

> $cloudiness = array('ясно', 'малооблачно', 'облачно', 'пасмурно'); $precipitation = array(4=>'дождь', 5=>'ливень', 6=>'снег', 7=>'снег', 8=>'гроза', 9=>'нет данных', 10=>'без осадков');

#!/usr/bin/perl

use warnings;
use strict;
use 5.010;

use LWP::Simple;

my $url = "http://informer.gismeteo.ru/xml/27719_1.xml";

my @cld = qw/ясно малооблачно облачно пасмурно/;
my %prc = ( qw/4 дождь 5 ливень 6 снег 7 снег 8 гроза/, 9 => "нет данных", 10 => "без осадков");

my ($cloud,$prec,$tmin,$tmax);
foreach (split /\n/,get($url)) {
	given ($_) {
		when (/PHENOMENA/) {
			$cloud=$cld[$1] and $prec=$prc{$2} if /cloudiness="([0-9]+)" precipitation="([0-9]+)"/;
		}
		when (/HEAT/) { $tmin=$1 and $tmax=$2 if /min="([0-9]+)" max="([0-9]+)"/; }
		when (/\/FORECAST/) {
			say "Темп. $tmin..$tmax°C" if $tmin and $tmax;
			say "Облачность: $cloud" if defined $cloud;
			say "Осадки: $prec" if defined $prec;
			exit 0;
		}
	}
}
AITap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.