Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix. / 25 сообщений из 35, страница 1 из 2
06.08.2018, 16:15
    #39683806
tnAnGel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
Ранее написал небольшой скрипт на питоне, чтобы в автоматическом режиме мониторил коннекты к веб серверу, анализировал и генерировал 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
06.08.2018, 16:42
    #39683829
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
...
Рейтинг: 0 / 0
06.08.2018, 16:45
    #39683832
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
tnAnGel,

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

uses
 Posix.StdLib;

begin

 _system('ls');

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

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

Внезапно придётся изучать-таки "очень громоздкий" вариант.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.08.2018, 17:33
    #39683862
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
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
06.08.2018, 17:42
    #39683865
tnAnGel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
Kazantsev Alexey, хм, Вы файл все равно записываете на диск перед тем как выводите. Я думал, что можно ответ сразу поместить в StringList, так как доступ из памяти быстрее, нежели с диска, особенно когда сервер перегружен и большое кол-во операций в предложенным Вами выше варианте не есть хорошо для моей цели :)
Возможно ли как-то без записи на диск это реализовать?
...
Рейтинг: 0 / 0
06.08.2018, 17:44
    #39683866
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RAD Studio 10.2 - как вызвать любое приложение из среды unix? Разработка под win для unix.
tnAnGelВозможно ли как-то без записи на диск это реализовать?

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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