Quiz Memorial Forum

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> Вывод в файл
Under
post May 6 2008, 03:41 PM
Post #1


Посетитель
*

Group: Members
Posts: 8
Joined: 6-May 08
Member No.: 220



Мог бы кто продемонстрировать кусок кода, в котром выполняется шелл-команда, а ее вывод перенаправляется в файл? К примеру, cal.
exec > file, я так понимаю, но не осилил с ходу..
С уважением.


--------------------
Linux gentoo 2.6.24 SMP UTC 2008 i686 Genuine Intel® CPU 2160 @ 1.80GHz GenuineIntel GNU/Linux
http://www.rusirc.ru - /server -m irc.rusirc.ru
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post May 6 2008, 04:43 PM
Post #2


Developer
******

Group: Root Admin
Posts: 396
Joined: --
From: Внешние пределы
Member No.: 2



Ну в общем-то ничего сложного:
QUOTE
‹17·40·47›-|[ Kreon ]|- .tcl exec echo 12345 > temp.txt
‹17·40·47› <Askara> Tcl:
‹17·41·07›-|[ Kreon ]|- .tcl exec cat temp.txt
‹17·41·07› <Askara> Tcl: 12345
‹17·41·13›-|[ Kreon ]|- .tcl exec rm temp.txt
‹17·41·13› <Askara> Tcl:

Т.е. просто exec шелл-команда > файл, и все запишется.
Или я не понял вопроса.


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Under
post May 6 2008, 05:16 PM
Post #3


Посетитель
*

Group: Members
Posts: 8
Joined: 6-May 08
Member No.: 220



Не, я не совсем про это smile.gif.
Имеется в виду, что по команде !ххх, скрипт запускает в шелле определенную команду и записывает в файл результат ее выполнения.

В принципе, это я для себя придумал сложность. Если говорить конкретно о задаче, то ситуация такова:
Надо что по команде !kernel бот выдавал нотисом ответ от "finger @kernel.org", т..е:
CODE

[kernel.org]
Trying 204.152.191.5...
The latest stable version of the Linux kernel is:           2.6.25.1
The latest prepatch for the stable Linux kernel tree is:    2.6.26-rc1
The latest snapshot for the stable Linux kernel tree is:    2.6.26-rc1-git4
The latest 2.4 version of the Linux kernel is:              2.4.36.3
The latest 2.2 version of the Linux kernel is:              2.2.26
The latest prepatch for the 2.2 Linux kernel tree is:       2.2.27-rc2
The latest -mm patch to the stable Linux kernels is:        2.6.25-mm1


Я в тикле не силен, но как отдать информацию из файла понимаю, поэтому решил через промежуточный файл сделать, но вопрос в том как правильно эту инфу туда завести.

Надеюсь прояснил.


--------------------
Linux gentoo 2.6.24 SMP UTC 2008 i686 Genuine Intel® CPU 2160 @ 1.80GHz GenuineIntel GNU/Linux
http://www.rusirc.ru - /server -m irc.rusirc.ru
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post May 6 2008, 05:28 PM
Post #4


Developer
******

Group: Root Admin
Posts: 396
Joined: --
From: Внешние пределы
Member No.: 2



Так а в чем разница-то между моим примером и вашей задачей?
QUOTE
‹18·20·03›-|[ Kreon ]|- .tcl exec finger @kernel.org > temp.txt
‹18·20·06› <Askara> Tcl:
‹18·20·09›-|[ Kreon ]|- .tcl exec cat temp.txt
‹18·20·10› <Askara> Tcl: [kernel.org]
‹18·20·10› <Askara> Tcl: Trying 204.152.191.5...
‹18·20·10› <Askara> Tcl: The latest stable version of the Linux kernel is: 2.6.25.1
‹18·20·10› <Askara> Tcl: The latest prepatch for the stable Linux kernel tree is: 2.6.26-rc1
‹18·20·10› <Askara> Tcl: The latest snapshot for the stable Linux kernel tree is: 2.6.26-rc1-git4
‹18·20·10› <Askara> Tcl: The latest 2.4 version of the Linux kernel is: 2.4.36.3
‹18·20·10› <Askara> Tcl: The latest 2.2 version of the Linux kernel is: 2.2.26
‹18·20·10› <Askara> Tcl: The latest prepatch for the 2.2 Linux kernel tree is: 2.2.27-rc2
‹18·20·10› <Askara> Tcl: The latest -mm patch to the stable Linux kernels is: 2.6.25-mm1

В скрипте если это оформлять - будет как-то так:
CODE
if {[catch {exec finger @kernel.org > temp.txt} err]} {putlog "error: $err"; return 0}

В результате у вас в файле temp.txt окажется результат команды finger @kernel.org. А с файлом как вы сказали, вы знаете, что делать.

ЗЫ: Хотя нет особо резона возьться с файлами здесь - проще этот вывод записать в переменную и работать сразу с ней. Файл тут ни при чем.
CODE
# получаем данные и записываем их в $query, [catch] нужен если процесс обломается
if {[catch {set query [exec finger @kernel.org]} err]} {putlog "error: $err"; return 0}
# построчно выводим на патилайн полученный текст
foreach line [split $query \n] {putlog $line}


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Under
post May 6 2008, 05:47 PM
Post #5


Посетитель
*

Group: Members
Posts: 8
Joined: 6-May 08
Member No.: 220



Благодарю за пояснения.
Набрасал следующее:
CODE

bind pub - !finger pub:f
proc pub:f {nick host hand channel text} {

if {[catch {set query [exec finger @kernel.org]} err]} {putlog "error: $err"; return 0}
foreach line [split $query \n] {putlog $line}
putquick "notice $nick $line"
}

Получаю:
CODE

<Under> !finger
-Stella- The latest -mm patch to the stable Linux kernels is:        2.6.25-mm1


Как вывести все строки ответа команды?


--------------------
Linux gentoo 2.6.24 SMP UTC 2008 i686 Genuine Intel® CPU 2160 @ 1.80GHz GenuineIntel GNU/Linux
http://www.rusirc.ru - /server -m irc.rusirc.ru
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post May 6 2008, 06:01 PM
Post #6


Developer
******

Group: Root Admin
Posts: 396
Joined: --
From: Внешние пределы
Member No.: 2



Вы написали строку putquick "notice $nick $line" вне цикла foreach. Правильно здесь будет так:
CODE
bind pub - !finger pub:f
proc pub:f {nick host hand channel text} {
   if {[catch {set query [exec finger @kernel.org]} err]} {putlog "error: $err"; return 0}
   foreach line [split $query \n] {
      #putlog $line -- вывод на патилайн тогда не нужен
      putquick "notice $nick $line"
   }
}


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Under
post May 6 2008, 06:10 PM
Post #7


Посетитель
*

Group: Members
Posts: 8
Joined: 6-May 08
Member No.: 220



В самом деле, не внимателен. Большое спасибо за содействие, вопрос исчерпан. :-)


--------------------
Linux gentoo 2.6.24 SMP UTC 2008 i686 Genuine Intel® CPU 2160 @ 1.80GHz GenuineIntel GNU/Linux
http://www.rusirc.ru - /server -m irc.rusirc.ru
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Under
post May 6 2008, 06:57 PM
Post #8


Посетитель
*

Group: Members
Posts: 8
Joined: 6-May 08
Member No.: 220



Кстати, в догонку, установил поверх оригинального бота, бота с suzi-патчем. Некоторые команды бота идут в "???". Видимо с кодировками что-то, не пойму что.

Заведомо рабочее:
Пример 1.
CODE
[02:58:36] <<Under>> !п мск
[02:58:40] <<Stella>> Under: Сегодня ночью в городе ?????? 0..+2°C, давление 746мм рт/с, ветер северный 4 м/с, влажность 67%, облачно. Завтра, 7 мая, температура днем составит +5..+7°C, давление 745мм рт/с, ветер северный 4 м/с, влажность 39%, малооблачно.


Пример 2.
CODE
[02:52:05] <<Under>> !г тест
[02:52:23] <<Stella>> Under: К величайшему сожалению google.ru ничего полезного не нашел... -.-

А в англ. варианте все ОК.

CODE
[03:01:00] <<Under>> !г test
[03:01:05] <<Stella>> Under: http://www.russian.language.ru/test.htm - Study Russian in Russia: Online Russian Tes


--------------------
Linux gentoo 2.6.24 SMP UTC 2008 i686 Genuine Intel® CPU 2160 @ 1.80GHz GenuineIntel GNU/Linux
http://www.rusirc.ru - /server -m irc.rusirc.ru
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Under
post May 6 2008, 08:17 PM
Post #9


Посетитель
*

Group: Members
Posts: 8
Joined: 6-May 08
Member No.: 220



Вопрос пока снимается, собрал свежего 1.6.19. Все заработало. 2 года бот похал на 1.6.18 без suzi, и есть не просил smile.gif.


--------------------
Linux gentoo 2.6.24 SMP UTC 2008 i686 Genuine Intel® CPU 2160 @ 1.80GHz GenuineIntel GNU/Linux
http://www.rusirc.ru - /server -m irc.rusirc.ru
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



Lo-Fi Version Time is now: 28th March 2024 - 01:30 PM
Design by GPF © 2006