Язык программирования Alfa
Язык программирования Alfa - это попытка создать инструмент, для удаленного администрирования и автоматизации выполняемых работ на серверах и компьютерах под Windows платформой, с простым и ясным синтаксисом похожим на старый, добрый - Pascal.
Краткая характеристика языка Alfa
Автор: Александр Уваров
- Язык Alfa процедурный, типизированный;
- Программа на языке Alfa состоит из единственного модуля. Выполнение программы начинается с первого оператора после слова begin;
- Предусмотрены константы и переменные вещественного (real), целого (int), строкового (string), булевского (bool) типа. Ссылочные переменные файлового (file) типа, серверного (server) типа, COM (comobj) типа, процедурного (proc, func) типа;
- Предусмотрены одномерные массивы перечисленных типов;
- Переменные серверного типа (server) представляют собой специальный объект сервер, с помощью методов которого, можно удаленно выполнять различные действия на сервере или рабочей станции. Можно запускать и останавливать службы и процессы, определять их текущее состояние, перезагружать сервер, изменять IP адрес, определять доступность любого компьютера или сервера в сети, работать с файлами, папками, общими ресурсами;
- Предусмотрена работа с внешними серверами автоматизации (COM объектами);
- Предусмотрены стандартные процедуры и функции для работы с числами, строками, массивами, папками и файлами, а также функции для отправки сообщений электронной почты по протоколу SMTP, функции передачи и приёма файлов по протоколу FTP, функции для работы с INI файлами, функции для работы с COM объектами;
- Предусмотрен ввод и вывод на консоль, чтение и запись информации в текстовый файл;
- Предусмотрено выполнение кода написанного на других языках программирования JScript, VBScript;
- В записи программы разрешены комментарии, которые могут быть вложенными;
- Большие и малые буквы различаются;
- Язык программирования Alfa предназначен исключительно для специфических задач удаленного администрирования серверов и компьютеров и не претендует ни на что более.
Скачать
- Инсталлятор языка программрования Alfa [MSI, ~1 Мб]
- Документация [PDF, ~2.6 Мб]
- Интерпретатор языка программирования - реализация с помощью компилятора компиляторов Coco/R [PDF, ~2.1 Мб]
Пример программы на языке Alfa
Задача
Пусть у нас имеется комплекс серверов. Нужно удаленно, с любого рабочего места, как можно быстро, проверить состояние серверов, а так же запущены ли необходимые службы на них. Если службы, по какой либо причине не запущены (“упали”), то запустить их (“поднять”).
Ниже представлен исходный код на языке программированияAlfa, для решения поставленной задачи.
#on_log
program ControlServers;
var
I : int;
// службы на сервере телеобработки
Main_TO : array 4 of string =
(
"Телеобработка",
"Монитор взаимодействия с Этран",
"Модуль взаимодействия с АС ЭТД",
"StatClient"
);
// службы на основном сервере приложений
Main_SP : array 4 of string =
(
"Планировщик СП основной",
"Отчетность АСУСТ (основная)",
"Сервер подсистемы КСАРМ ВЧД",
"StatClient(основной)"
);
// службы на резервном сервере приложений
Res_SP : array 4 of string =
(
"Планировщик СП резервный";
"Отчетность АСУСТ (резервная)";
"Сервер подсистемы КСАРМ ВЧД";
"StatClient(резервный)";
);
declare @CUMR04_TO : server
Title = "Cервер телеобработки";
Host = "1.2.2.15";
User = "adm";
Password = "pass";
IntervalWait = 60;
WaitReboot = 360;
end;
declare @CUMR04A : server
Title = "Основной сервер приложений";
Host = "1.2.2.11";
User = "adm";
Password = "pass";
IntervalWait = 60;
WaitReboot = 360;
end;
declare @CUMR05A : server
Title = "Резервный сервер приложений";
Host = "1.2.2.21";
User = "adm";
Password = "pass";
IntervalWait = 60;
WaitReboot = 360;
end;
procedure OutMess (Mess : string; NameService : string);
begin
if not(Mess = "") then
writeln("Ошибка: ", Mess);
else
writeln("Cлужба: " + "'" + NameService + "'" + " - запущена!");
endif;
end;
procedure ServiceControl (var @Serv : server; NameService : string);
begin
@Serv->ControlService(NameService);
OutMess(@Serv->Get_MessErr(), NameService);
end;
begin
writeln("=========================================");
writeln("Контроль состояния служб на серверах ЦУМР");
writeln("=========================================");
// подключение к серверу телеобработки
writeln("Подключение к серверу телеобработки");
if not @CUMR04_TO->Connect() then
writeln("Ошибка: ", @CUMR04_TO->Get_MessErr());
exit;
endif;
// подключение к основному серверу приложений
writeln("Подключение к основному серверу приложений");
if not @CUMR04A->Connect() then
writeln("Ошибка: ", @CUMR04A->Get_MessErr());
exit;
endif;
// подключение к резервному серверу приложений
writeln("Подключение к резервному серверу приложений");
if not @CUMR05A->Connect() then
writeln("Ошибка: ", @CUMR05A->Get_MessErr());
exit;
endif;
writeln("-----------------------------------------");
writeln(@CUMR04_TO.Title + " (" + @CUMR04_TO.Host + ")");
// проверка запуска служб на сервере телеобработки
for I := 0 to Len(Main_TO) - 1
ServiceControl(@CUMR04_TO, Main_TO[I]);
endfor;
writeln("-----------------------------------------");
writeln(@CUMR04A.Title + " (" + @CUMR04A.Host + ")");
// проверка запуска служб на основном сервере приложений
for I := 0 to Len(Main_SP) - 1
ServiceControl(@CUMR04A, Main_SP[I]);
endfor;
writeln("-----------------------------------------");
writeln(@CUMR05A.Title + " (" + @CUMR05A.Host + ")");
// проверка запуска служб резервном сервере приложений
for I := 0 to Len(Res_SP) - 1
ServiceControl(@CUMR05A, Res_SP[I]);
endfor;
writeln("-----------------------------------------");
// запрос на завершение работы
readln();
end.
Ниже представлен файл протокола программы ControlServers.
ControlServers
Дата: 22.10.2009 Время: 16:03:11
Время выполнения: 00:11.79
***********************************************************
=========================================
Контроль состояния служб на серверах ЦУМР
=========================================
Подключение к серверу телеобработки
Подключение к основному серверу приложений
Подключение к резервному серверу приложений
-----------------------------------------
Cервер телеобработки (1.2.2.15)
Cлужба: 'Телеобработка' - запущена!
Cлужба: 'Монитор взаимодействия с Этран' - запущена!
Cлужба: 'Модуль взаимодействия с АС ЭТД' - запущена!
Cлужба: 'StatClient' - запущена!
-----------------------------------------
Основной сервер приложений (1.2.2.11)
Cлужба: 'Планировщик СП основной' - запущена!
Cлужба: 'Отчетность АСУСТ (основная)' - запущена!
Cлужба: 'Сервер подсистемы КСАРМ ВЧД' - запущена!
Cлужба: 'StatClient(основной)' - запущена!
-----------------------------------------
Резервный сервер приложений (1.2.2.21)
Cлужба: 'Планировщик СП резервный' - запущена!
Cлужба: 'Отчетность АСУСТ (резервная)' - запущена!
Cлужба: 'Сервер подсистемы КСАРМ ВЧД' - запущена!
Cлужба: 'StatClient(резервный)' - запущена!
-----------------------------------------
Оставить комментарий
Комментарии





