Вывод в файл |
Вывод в файл |
Under |
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 |
Kreon |
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 шелл-команда > файл, и все запишется. Или я не понял вопроса. -------------------- Не понял сам - не дай понять другому
|
Under |
May 6 2008, 05:16 PM
Post
#3
|
Посетитель Group: Members Posts: 8 Joined: 6-May 08 Member No.: 220 |
Не, я не совсем про это .
Имеется в виду, что по команде !ххх, скрипт запускает в шелле определенную команду и записывает в файл результат ее выполнения. В принципе, это я для себя придумал сложность. Если говорить конкретно о задаче, то ситуация такова: Надо что по команде !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 |
Kreon |
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} -------------------- Не понял сам - не дай понять другому
|
Under |
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 |
Kreon |
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" } } -------------------- Не понял сам - не дай понять другому
|
Under |
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 |
Under |
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 |
Under |
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, и есть не просил .
-------------------- 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 |
Lo-Fi Version | Time is now: 16th May 2024 - 08:42 PM |