В общем стала задачи автоматизации одного комплекса. Вдоволь надолбавшись со стандартными Windows-средствами изваял сие "творенье".
Исходники в приложении. ВНИМАНИЕ: теоретически код кроссплатформенный, НО тестировался только под виндой (в Linux хватает cron + sh).
Как работает:
Читает файл "crontab" формат как в Linux и по расписанию выполняет скрипты (QtScript с маленьким довеском).
ВЫЖНО: файл "crontab" (без расширения) должен быть рядом с exe-шником (пример crontab в приложении). Относительные пути так же вычисляются от местоположения exe-шника.
Дополнительный объекты в скриптах:
1. "ODBC" - Выполняет подключение к БД.
Умеет:
1.1 Соединиться с сервером
bool open(QString type, QString server, QString db, QString name);
bool open(QString type, QString server, QString db, QString user, QString pwd, QString name);
,где:
type - тип соединения (см. ниже по тексту)
server - сервер
db - БД
user, pwd - логин и пароль
name - уникальное (для одного скрипта) имя подключения
bool open(QString conn, QString name);
, где:
conn - полная строка подключения (ODBC Connection String)
name - уникальное (для одного скрипта) имя подключения
1.2 Выполнить запрос, с получением единичного результата:
QVariant execScript(QString script)
, где:
script - собственно запрос
1.3 Закрыть соединение с базой:
1.4 Рассказать о своем состоянии:
bool isError() // true, если последняя операция вызвала ошибку
bool isOpen() // true, если соединение активно (открыто)
QString lastError() // текст сообщения о последней ошибке
Поддерживаемые типы соединения:
MSSQL2000 - MSSQL 2000
MSSQL2000_TR - MSSQL 2000 без авторизации (trusted)
MSSQL2005 - MSSQL 2005
MSSQL2005_TR - MSSQL 2005 без авторизации (trusted)
PSGSQL_STD - PostgreSQL старых версий (до 7.х включительно)
PSGSQL_ANSI - PostgreSQL ANSI (> 8.0)
PSGSQL_UNICODE - PostgreSQL UNICODE (> 8.0)
PSGSQL_SSL - PostgreSQL защищенное SSL соединение (> 8.0)
ORACLE - ORACLE (кроме XE)
2. "DBQuery" - запрос данных из БД. Подключается через открытый объект "ODBC"
bool connect(QString name) // name имя подключения (зараннее открытого ODBC)
// навигация по записям:
bool next();
bool prev();
bool last();
bool first();
// все функции возвращают false, если движение по ResultSet'у в данном направлении не возможно
//получение значения текущего поля
QVariant value(QString field) // field - имя поля
3. "ServiceController" - управляет другими сервисами на одной с ним машине
Умеет:
//Фактически оболочка для QtServiceController из QtSolutions
bool start(QString serviceName);
bool stop(QString serviceName);
bool pause(QString serviceName);
bool resume(QString serviceName);
bool restart(QString serviceName);
bool command(QString serviceName, int code);
bool uninstall(QString serviceName);
bool install(const QString & serviceFilePath, const QString & account = QString(), const QString & password = QString());
bool isInstalled(QString serviceName);
bool isRunning(QString serviceName);
ВАЖНО: serviceName далеко не всегда совпадает с serviceDisplayedName!!! serviceName - это то, что отображается в свойствах сервиса в самой верхней строке! По злой иронии MicroSoft эта строка не копируется в буфер обмена.
4. "INI" - читает параметры из ini-файлов
Умеет:
//Фактически оболочка для QSettings
bool open(QString fName);
bool beginGroup(QString grName);
void endGroup();
QVariant value(QString key);
Ну вот как-то так.
P.S. Ах, да, по порту 8080 показывает выполняемые задания. Вроде как зайчатки web-интерфейса