Russian Qt Forum
Ноябрь 25, 2024, 06:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Получить вывод процесса в программу (Linux)  (Прочитано 11685 раз)
Hrundel
Гость
« : Октябрь 16, 2013, 18:11 »

Всем привет,

у меня есть следующая необходимость:
в /usr/lib/nagios/cgi лежит исполняемый status.sgi который возвращает веб-страницу
в консоли приходится это делать двумя коммандами

cd /usr/lib/nagios/cgi/
./status.cgi

потом на выводе идет код в html формате

мне нужно перехватить этот код в программу
написал вот так, но не работает:

Код:
    QProcess cgiStream;

    cgiStream.start("cd /usr/lib/nagios/cgi/");
    cgiStream.write("./status.cgi");
    cgiStream.waitForFinished();
    qDebug() << "cgi output: " << cgiStream.readAllStandardOutput();

будьте добры - объясните как правильно.
« Последнее редактирование: Октябрь 17, 2013, 10:04 от Hrundel » Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Октябрь 16, 2013, 18:30 »

   cgiStream.start("cd /usr/lib/nagios/cgi/");
    cgiStream.write("./status.cgi");

жесть

Если cd точно нужно делать, то как-то так:

Код
C++ (Qt)
cgiStream.setWorkingDirectory("/usr/lib/nagios/cgi");
cgiStream.start("./status.cgi");
« Последнее редактирование: Октябрь 16, 2013, 20:44 от Alex Custov » Записан
Hrundel
Гость
« Ответ #2 : Октябрь 16, 2013, 20:03 »

Ну, не работал я с процессами ни разу  Смеющийся

Спасибо. Уже что-то.
« Последнее редактирование: Октябрь 17, 2013, 09:46 от Hrundel » Записан
Hrundel
Гость
« Ответ #3 : Октябрь 17, 2013, 09:43 »

переделал но все-равно не работает

Код:
QProcess cgiStream;

QString path = QDir::currentPath();
QStringList commands("./cgistream.sh");

cgiStream.start(path, commands);
cgiStream.waitToFinished();

qDebug() << cgiStream.readAllStandardOutput();

cgistream.sh содержит команды

Код:
  #!/bin/sh

export REMOTE_USER=nagiosadmin
export REQUEST_METHOD='GET'
export QUERY_STRING='host=all&csvoutput'

cd /usr/lib/nagios/cgi
./status.cgi

« Последнее редактирование: Октябрь 17, 2013, 09:44 от Hrundel » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #4 : Октябрь 17, 2013, 09:52 »

Нужно запускать shell (/bin/sh) и в качестве параметра передавать имя скрипта.
Записан
Hrundel
Гость
« Ответ #5 : Октябрь 17, 2013, 10:03 »

Old, большое спасибо, все сразу заработало !!!  Улыбающийся
Записан
Fat-Zer
Гость
« Ответ #6 : Октябрь 17, 2013, 23:08 »

Нужно запускать shell (/bin/sh) и в качестве параметра передавать имя скрипта.
и без этого должно работать... если chmod +x сделан, нет хитроумных способов монтирования и пробел перед хешбенгом — опечатка...
ЗЫ: хотя учитывая всё это с sh надёжней...
« Последнее редактирование: Октябрь 18, 2013, 00:31 от Fat-Zer » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.16 секунд. Запросов: 23.