From: Stas Mishchenkov 2:460/5858 10 Oct 2022 09:31 +0300
To: Pavel Gulchouck 2:463/68
Subject: hpt.core
Hi, Pavel! 08 окт 22 22:22, Pavel Gulchouck -> Stas Mishchenkov: SM>> Учитывая, что скрипт у тебя на перле и текст генерируется именно в SM>> нём, то проще из перла же и создать сразу PKT в инбаунде, чем SM>> вызывать hpt post, что чревато глюками. PG> Есть ли готовая перловая библиотека для создания pkt? Есть, кажется, целых две. Однако, что-то там мне не понравилось и я сделал собственную. После обработки напильником могу поделиться. А пока можно списать, например, отсюда https://brorabbit.g0x.ru/files/perl/callip.pl PG> Если нет, то вызвать из перла "hpt post" явно проще, чем создавать PG> пакет "руками", там немало разных нюансов. Я пробовал. Получался глюкогенератор. Именно по этому, ну, кроме того, разумеется, что мне было просто интересно, и озаботился написанием. Have nice nights. Stas Mishchenkov.
From: Ruslan Suleimanov 2:467/888 09 Oct 2022 23:54 +0300
To: Pavel Gulchouck 2:463/68
Subject: hpt.core
Привет, Pavel! Ответ на сообщение Pavel Gulchouck (2:463/68) к Ruslan Suleimanov, написанное 08 окт 22 в 11:00: PG> Hi Ruslan! PG> 07 Oct 22, Ruslan Suleimanov ==> Pavel Gulchouck: PG>>>>> Покажи, как именно он запускается из перла. RS>>>> open(FROMK,"-|") || exec("cat /mnt/fido/CODE/db/1.txt | hpt -c RS>>>> /mnt/fido/zone2/husky/config post -af '2:467/888' -nf '.....' ... RS>>>> -") || die "error message: $!"; close(FROMK); PG>>> Тут много странного. PG>>> У open() второй параметр "-|", что предполагает третий аргумент как PG>>> процесс, для которого stdout перенаправляется в FROMK. Но третий PG>>> параметр не передаётся, от undef. Вариант undef как третий параметр PG>>> используется для unnamed tempfile, но это в случае "+>", а в твоём PG>>> случае я не понимаю, что произойдёт и что имелось ввиду, поясни. RS>> тут я открываю канал без опаски перехвата интерпретатором команд моих RS>> аргументов которые могут изменятся. тоесть потом просто читается из RS>> FROMK в родительском процессе. PG> Ты хочешь, чтобы, если в параметрах, которые ты подставляешь из переменных, PG> встретились метасимволы ("'", "$"), то они не были интерпретированны PG> шеллом? Открытый пайп FROMK (а на самом деле не открытый, иначе exec не PG> выполнится) тут не поможет. Запускай hpt через exec() (если возврат не PG> нужен) или через system (если нужен), передавая не командную строку, а PG> список аргументов без всяких перенаправлений, тогда он будет выполнен без PG> shell. Текст поста ты предварительно пишешь в 1.txt? Тогда просто передавай PG> этот 1.txt параметром. А если хочешь через пайп, тогда open my $openk, PG> "|-", "hpt post -nf '$from' ... -"; и потом в $openk пиши текст поста, без PG> создания 1.txt. Но тогда нужно самостоятельно проверить, чтобы в параметрах PG> не встретились одинарные кавычки. Ещё вариант, чтобы использовать пайп без PG> запуска шелла - руками сделать редирект stdout на пайп, потом запустить PG> hpt, и потом писать в пайп. Или использовать IPC::Open3. PG> В твоём случае я бы предложил не усложнять, т.е. не использовать пайп, а PG> запускать через system() со списком параметров, а текст брать из файла PG> 1.txt. RS>> а как можно безопасно вызвать чтобы динамичные аргументы не RS>> подставлялись в командах ? через system() ? PG> Можно через system(), можно через exec(), можно предварительно экранировать PG> метасимволы. спасибо будем заниматься. Тебе удачи ! WBR Ruslan Suleimanov ... "Спершу ти називаэш українцiв салоїдами, а потiм тебе в полi доїдає українська
From: Victor Dronov 2:5030/722.140 09 Oct 2022 00:27 +0300
To: Dima Krylov 2:5020/570.1
Subject: exec failed, code 256
Hello Dima! 08 Oct 22 20:26, you wrote to Stas Mishchenkov: DK> Возможно дело в чем-то еще, т.к. виноват не BusyBox. Я сейчас снес unzip DK> и САБЖ стал вылетать на всех пакетах. Получается, что BusyBox не DK> работает в принципе. Да не все ключи он понимает, а когда не понимает, 1 и возвращает. -L, конкретно, он не знает. Victor ... Dronov шугает демонов, меряющихся вилками с утконосами
From: Pavel Gulchouck 2:463/68 08 Oct 2022 22:22 +0300
To: Stas Mishchenkov 2:460/5858
Subject: hpt.core
Hi Stas! 08 Oct 22, Stas Mishchenkov ==> Ruslan Suleimanov: RS>> ок понял, попробую через system() и профильтровать динамические RS>> аргументы, послежу за поведением, спасибо. SM> Учитывая, что скрипт у тебя на перле и текст генерируется именно в нём, то проще из перла же и создать сразу PKT в инбаунде, чем SM> вызывать hpt post, что чревато глюками. Есть ли готовая перловая библиотека для создания pkt? Если нет, то вызвать из перла "hpt post" явно проще, чем создавать пакет "руками", там немало разных нюансов. Lucky carrier, Паша aka gul@gul.kiev.ua
From: Dima Krylov 2:5020/570.1 08 Oct 2022 20:26 +0300
To: Stas Mishchenkov 2:460/5858
Subject: exec failed, code 256
Привет тебе, Stas! Kaк-тo нa дняx (08 окт 22) Stas Mishchenkov пишeт к Dima Krylov... [ ... ] DK>> Получается, что поменялось что-то на стороне линка, если мой DK>> урезанный вариант BusyBox перестал жрать его пакеты? SM> Возможно поменялся тип сжатия. Возможно дело в чем-то еще, т.к. виноват не BusyBox. Я сейчас снес unzip и САБЖ стал вылетать на всех пакетах. Получается, что BusyBox не работает в принципе.
From: Stas Mishchenkov 2:460/5858 08 Oct 2022 20:08 +0300
To: Ruslan Suleimanov 2:467/888
Subject: hpt.core
Hi, Ruslan! 07 окт 22 23:28, Ruslan Suleimanov -> Pavel Gulchouck: RS> ок понял, попробую через system() и профильтровать динамические RS> аргументы, послежу за поведением, спасибо. Учитывая, что скрипт у тебя на перле и текст генерируется именно в нём, то проще из перла же и создать сразу PKT в инбаунде, чем вызывать hpt post, что чревато глюками. Have nice nights. Stas Mishchenkov.
From: Stas Mishchenkov 2:460/5858 08 Oct 2022 19:51 +0300
To: Dima Krylov 2:5020/570.1
Subject: exec failed, code 256
Hi, Dima! 07 окт 22 22:28, Dima Krylov -> Michael Dukelsky: MD>> а путь к нему в конфиге hpt прописать забыл. DK> Как же оно работало всегда без пути в конфиге и работает с пакетами других DK> линков без пути в конфиге? Мне тоже интересно. MD>> В результате работал урезанный вариант из BusyBox. DK> Получается, что поменялось что-то на стороне линка, если мой урезанный DK> вариант BusyBox перестал жрать его пакеты? Возможно поменялся тип сжатия. Have nice nights. Stas Mishchenkov.
From: Pavel Gulchouck 2:463/68 08 Oct 2022 11:00 +0300
To: Ruslan Suleimanov 2:467/888
Subject: hpt.core
Hi Ruslan! 07 Oct 22, Ruslan Suleimanov ==> Pavel Gulchouck: PG>>>> Покажи, как именно он запускается из перла. RS>>> open(FROMK,"-|") || exec("cat /mnt/fido/CODE/db/1.txt | hpt -c RS>>> /mnt/fido/zone2/husky/config post -af '2:467/888' -nf '.....' ... -") RS>>> || die "error message: $!"; RS>>> close(FROMK); PG>> Тут много странного. PG>> У open() второй параметр "-|", что предполагает третий аргумент как PG>> процесс, для которого stdout перенаправляется в FROMK. Но третий параметр PG>> не передаётся, от undef. Вариант undef как третий параметр используется для PG>> unnamed tempfile, но это в случае "+>", а в твоём случае я не понимаю, что PG>> произойдёт и что имелось ввиду, поясни. RS> тут я открываю канал без опаски перехвата интерпретатором команд моих аргументов RS> которые могут изменятся. RS> тоесть потом просто читается из FROMK в родительском процессе. Ты хочешь, чтобы, если в параметрах, которые ты подставляешь из переменных, встретились метасимволы ("'", "$"), то они не были интерпретированны шеллом? Открытый пайп FROMK (а на самом деле не открытый, иначе exec не выполнится) тут не поможет. Запускай hpt через exec() (если возврат не нужен) или через system (если нужен), передавая не командную строку, а список аргументов без всяких перенаправлений, тогда он будет выполнен без shell. Текст поста ты предварительно пишешь в 1.txt? Тогда просто передавай этот 1.txt параметром. А если хочешь через пайп, тогда open my $openk, "|-", "hpt post -nf '$from' ... -"; и потом в $openk пиши текст поста, без создания 1.txt. Но тогда нужно самостоятельно проверить, чтобы в параметрах не встретились одинарные кавычки. Ещё вариант, чтобы использовать пайп без запуска шелла - руками сделать редирект stdout на пайп, потом запустить hpt, и потом писать в пайп. Или использовать IPC::Open3. В твоём случае я бы предложил не усложнять, т.е. не использовать пайп, а запускать через system() со списком параметров, а текст брать из файла 1.txt. RS> а как можно безопасно вызвать чтобы динамичные аргументы не подставлялись в командах ? RS> через system() ? Можно через system(), можно через exec(), можно предварительно экранировать метасимволы. Lucky carrier, Паша aka gul@gul.kiev.ua
From: Ruslan Suleimanov 2:467/888 07 Oct 2022 23:28 +0300
To: Pavel Gulchouck 2:463/68
Subject: hpt.core
Привет, Pavel! Ответ на сообщение Pavel Gulchouck (2:463/68) к Ruslan Suleimanov, написанное 07 окт 22 в 12:19: PG> Hi Ruslan! PG> 06 Oct 22, Ruslan Suleimanov ==> Pavel Gulchouck: PG>>> Покажи, как именно он запускается из перла. RS>> open(FROMK,"-|") || exec("cat /mnt/fido/CODE/db/1.txt | hpt -c RS>> /mnt/fido/zone2/husky/config post -af '2:467/888' -nf '.....' ... -") RS>> || die "error message: $!"; RS>> close(FROMK); PG> Тут много странного. PG> У open() второй параметр "-|", что предполагает третий аргумент как PG> процесс, для которого stdout перенаправляется в FROMK. Но третий параметр PG> не передаётся, от undef. Вариант undef как третий параметр используется для PG> unnamed tempfile, но это в случае "+>", а в твоём случае я не понимаю, что PG> произойдёт и что имелось ввиду, поясни. тут я открываю канал без опаски перехвата интерпретатором команд моих аргументов которые могут изменятся. тоесть потом просто читается из FROMK в родительском процессе. PG> Кстати, для filehandle рекомендуют использовать обычные переменные, а не PG> glob, т.е. "open(my $fromk, ...)" вместо устаревшего варианта "open(FROMK, PG> ...)". ок, спасибо, перепишу скрипт. PG> Потом, exec() выполняется только если этот open() не был успешен. Немного PG> странная логика, ну да ладно. Наверное, ты знаешь, что exec() заменяет PG> текущий процесс запускаемым, т.е. возврата после успешного exec() не PG> происходит (если нужен возврат и продолжение работы скрипта, то вместо PG> exec() надо использовать system()). PG> Зачем вызывать в варианте "cat 1.txt | hpt post ... -" вместо "hpt PG> post ... PG> 1.txt"? а как можно безопасно вызвать чтобы динамичные аргументы не подставлялись в командах ? через system() ? PG> Не исключаю, что hpt может плохо работать с пайпом на stdin - не PG> ожидать, что данные ещё не готовы и их прочитано меньше, чем PG> запрошено. PG> Кроме того, передавать файл параметром эффективнее: в этом случае не PG> нужно PG> будет запускать дополнительный процесс cat и, скорее всего, shell. PG> hpt, конечно, всё равно не должен падать по segfault, но для начала PG> имеет PG> смысл привести к более понятному виду его запуск. ок понял, попробую через system() и профильтровать динамические аргументы, послежу за поведением, спасибо. WBR Ruslan Suleimanov "Спершу ти називаэш українцiв салоїдами, а потiм тебе в полi доїдає українська свиня. В карми все ок з iронiєю."(c) Селфiя Iгорiвна ... Наши мысли, определяют наше будущее.
From: Ruslan Suleimanov 2:467/888 07 Oct 2022 23:24 +0300
To: Pavel Gulchouck 2:463/68
Subject: hpt.core
Привет, Pavel! Ответ на сообщение Pavel Gulchouck (2:463/68) к Ruslan Suleimanov, написанное 07 окт 22 в 12:41: PG> 06 Oct 22, Ruslan Suleimanov ==> Pavel Gulchouck: PG>>> Ошибка воспроизводится или при запуске с одинаковыми параметрами PG>>> иногда отрабатывает корректно, а иногда падает? RS>> да, именно, иногда корректно, а иногда падает. Но сабж для hpt post RS>> скармливается разный, и тело сообщения разное. PG> А при повторном запуске после падения с теми же параметрами, с которыми PG> упало, может отработать корректно? вот єтого я незнаю, так как всегда разный текст, как проверить незнаю, развечто выловить тот текст на котором падает и попробовать снова скормить. WBR Ruslan Suleimanov ... Идите домой. Водки нет! Go home, no vodka!