powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
25 сообщений из 35, страница 1 из 2
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683806
tnAnGel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ранее написал небольшой скрипт на питоне, чтобы в автоматическом режиме мониторил коннекты к веб серверу, анализировал и генерировал white лист. Сейчас же решил попробовать подобное сделать на delphi, так как она в свою очередь получила обновление до поддержки unix x64 машин.

Ранее на питоне:
Код: python
1.
System("sudo tcpdump -v -n -w attack.log dst port 80  -c 2000");



А как на delphi вызвать - не нашел ответа. Посмотрел как в lazarus реализовано - не подошло. AProcess и в помине нет близко.

Т.е. нужна альтернатива нашему ShellExecute из под windows, на unix машины.
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683829
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683832
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tnAnGel,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
program Project1;

uses
 Posix.StdLib;

begin

 _system('ls');

end.
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683845
tnAnGel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первый вариант не подошел, так как очень громоздкий. Я его ранее видел.

Второй вариант - абсолют. Спасибо!
Все получилось у меня, благодарю Вас!
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683851
tnAnGel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kazantsev Alexey, возник еще один вопрос, как ответ записать. На данном примере имена файлов в любой строковый/многостроковый тип данных?
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683852
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tnAnGelвозник еще один вопрос, как ответ записать. На данном примере имена файлов в любой
строковый/многостроковый тип данных?

Внезапно придётся изучать-таки "очень громоздкий" вариант.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683862
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tnAnGelвозник еще один вопрос, как ответ записать
В первом предложенном варианте, как раз есть чтение вывода. Но можно и проще...

tnAnGelНа данном примере имена файлов в любой строковый/многостроковый тип данных?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
program Project1;

uses
 System.Classes, Posix.StdLib, Posix.StdIo;
var
 fn : Utf8String;
 ls : TStringList;
 s  : String;
begin

 fn := '/tmp/randomName.txt';

 _system(MarshaledAString('ls>' + fn));
 try

 ls := TStringList.Create;
 ls.LoadFromFile(fn);

 finally
  remove(MarshaledAString(fn));
 end;

 writeLn('---');
 for s in ls do
  writeLn(s);
 writeLn('---');

 ls := nil;

end.
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683865
tnAnGel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kazantsev Alexey, хм, Вы файл все равно записываете на диск перед тем как выводите. Я думал, что можно ответ сразу поместить в StringList, так как доступ из памяти быстрее, нежели с диска, особенно когда сервер перегружен и большое кол-во операций в предложенным Вами выше варианте не есть хорошо для моей цели :)
Возможно ли как-то без записи на диск это реализовать?
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683866
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tnAnGelВозможно ли как-то без записи на диск это реализовать?

Возможно. Придётся-таки изучать "очень громоздкий" вариант.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683868
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все 15 строк.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683870
tnAnGel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, я понял, что оговорился значительно нелепо, но Вам не кажется, что embarcadero должна была предусмотреть подобный сценарий развития событий?

Данный вариант я сейчас рассматриваю. Ранее я его положил в копилку возможных вариантов решения.
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683871
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tnAnGelВозможно ли как-то без записи на диск это реализовать?
В первом варианте делается без записи.

tnAnGelтак как доступ из памяти быстрее, нежели с диска, особенно когда сервер перегружен и большое кол-во операций в предложенным Вами выше варианте не есть хорошо для моей цели :)
Зависит от настроек. /tmp вполне может быть смонтирована как tmpfs , поэтому дисковых операций там вообще не будет.
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683875
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tnAnGelВам не кажется, что embarcadero должна была предусмотреть подобный сценарий развития событий?

Нет. Оно понятно, что Дельфи они делают для полных чайников, но создавать компоненты для
оборачивания в них десятка строк процедурного кода на все возможные случаи - выше их
возможностей. Кнопки "сделать программу" им не сотворить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683880
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

....а ещё есть /dev/shm
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683882
tnAnGel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kazantsev Alexey, я понял Вас, спасибо за подсказку. У меня был смонтирован как каталог. Сделаю еще себе ramfs как Вы посоветовали выше.

Dimitry Sibiryakov, согласен, но ведь это самое банальное, что может потребоваться при разработке под linux. Понимаете, сделано _system для ввода прямых команд в эту ОС, а для вывода результата - сами придумывайте?
А на счет Delphi: я считаю, что эта среда нужна для быстрой черновой разработки ввиду ее простоты и высокой скорости разработки, нежели на любом другом высшем яп.
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683888
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tnAnGelа для вывода результата - сами придумывайте?

а для "вывода результата" - точнее для перехвата результата - есть стандартные файлы STDIN, STDOUT и STDERR, описанные в любой книге по С. Кстати и в Паскале есть стандартные файлы Input и Output, вот Error нет, видимо школьникам слишком было бы сложно.
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683890
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tnAnGelПонимаете, сделано _system для ввода прямых команд в эту ОС

не для ввода, а для запуска. Ввода в _system нет.

если вы ходите запущенной команде скормить какой-то ввод - то придётся его тоже записывать стандартными файловыми функциями. Аналогично чтению файла вывода по ссылке.
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683891
tnAnGel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я Вас всех понял. Спасибо за ответы.
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683892
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tnAnGelDelphi: я считаю, что эта среда нужна для быстрой черновой разработки ввиду ее простоты и высокой скорости разработки


tnAnGelРанее написал небольшой скрипт на питоне, чтобы в автоматическом режиме мониторил коннекты к веб серверу, анализировал и генерировал white лист. Сейчас же решил попробовать подобное сделать на delphi

А Питон для "быстрого чернового прототипирования" не подходит?.. :-o
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683895
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch....а ещё есть /dev/shm
Вообще, если следовать духу и букве , то для целей коммуникации между софтом существует отдельная директория, узнать о которой можно из переменной окружения XDG_RUNTIME_DIR ;)
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683899
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tnAnGelПонимаете, сделано _system для ввода прямых команд в эту ОС, а для вывода результата -
сами придумывайте?

_system() это однострочная обёртка для функции GLIBC. Точно такие же обёртки есть для
popen() и fread(). А уж скомбинировать их в цикл - тут программист нужен. Ибо никто
заранее не в курсе какое приложение будет вызываться, каков будет объём и тип возвращаемых
им данных и т.д. и т.п.

Если вызываемое приложение возвращает 10 гигабайт бинарного мусора - в какой TStringList
ты его будешь укладывать? Да и, к слову сказать, помещение результата в TStringList -
изначально не очень хорошая идея.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683911
tnAnGel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, данные будут не большие. Не более 40-50Мб в самых худших вариантах в единицу времени.
У вас есть предложения? Так как я планирую использовать либо StringList, либо StringStream. Все зависит от того, что я захочу сделать дальше.

Из того что сейчас я собираюсь сделать: чтение и анализ логов tcpdump, senginx, apache. Далее запись в базу данных и мониторинг сервера.
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683912
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tnAnGelТак как я планирую использовать либо StringList, либо StringStream. Все зависит от того, что я захочу сделать дальше.
Можно делать последовательное чтение из текстового файла, без загрузки строк в StringList.
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683914
tnAnGel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kazantsev Alexey, хорошо, я учту ваш совет. Как раз все находится в ОЗУ и время доступа будет максимально быстрым.
...
Рейтинг: 0 / 0
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
    #39683919
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tnAnGelчто сейчас я собираюсь сделать: чтение и анализ логов tcpdump, senginx, apache.

А... что за утилиту ты собрался вызывать? Неужели 'cat'?..
Для чтения текстовых логов достаточно TextFile.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]