desarrollosconsejeria/adtos-server/1.7-0/serveradtosserver/clservidor.pas @ 23a384b9
23a384b9 | Elisa | unit clservidor;
|
|
{$mode objfpc}{$H+}
|
|||
interface
|
|||
uses
|
|||
process,Classes, SysUtils,IniFiles;
|
|||
type
|
|||
{ Tservidor }
|
|||
Tservidor = class
|
|||
private
|
|||
procedure LeerSetupIni(archivo:string);
|
|||
public
|
|||
constructor create (archivoini:string='/etc/adtosadmin.conf');
|
|||
procedure Ejecutar(comando: string);
|
|||
function HallarDato(Cmd: string): string;
|
|||
end;
|
|||
implementation
|
|||
uses globales;
|
|||
const
|
|||
NUMERO_EQUIPOS_POSIBLES:integer=1500;
|
|||
procedure Tservidor.Ejecutar(comando:string);
|
|||
var
|
|||
P: TProcess;
|
|||
mproceso:string;
|
|||
begin
|
|||
P := TProcess.Create(nil);
|
|||
try
|
|||
mproceso:='sh -c '+QuotedStr(comando);
|
|||
P.CommandLine := mproceso;
|
|||
P.Execute;
|
|||
finally
|
|||
P.Free;
|
|||
end;
|
|||
end;
|
|||
function Tservidor.HallarDato(Cmd:string):ansistring;
|
|||
const
|
|||
READ_BYTES = 2048;
|
|||
var
|
|||
S: TStringList;
|
|||
M: TMemoryStream;
|
|||
P: TProcess;
|
|||
n: LongInt;
|
|||
BytesRead: LongInt;
|
|||
ssalida:ansistring;
|
|||
mproceso:string;
|
|||
begin
|
|||
mproceso:='sh -c '+QuotedStr(Cmd + ' 2>&1');
|
|||
S := TStringList.Create;
|
|||
M := TMemoryStream.Create;
|
|||
BytesRead := 0;
|
|||
P := TProcess.Create(nil);
|
|||
try
|
|||
try
|
|||
P.CommandLine := mproceso;
|
|||
P.Options := [poUsePipes];
|
|||
P.Execute;
|
|||
while P.Running do
|
|||
begin
|
|||
M.SetSize(BytesRead + READ_BYTES);
|
|||
n := P.Output.Read((M.Memory + BytesRead)^, READ_BYTES);
|
|||
if n > 0 then
|
|||
begin
|
|||
Inc(BytesRead, n);
|
|||
end
|
|||
else
|
|||
begin
|
|||
Sleep(100);
|
|||
end;
|
|||
end;
|
|||
repeat
|
|||
M.SetSize(BytesRead + READ_BYTES);
|
|||
n := P.Output.Read((M.Memory + BytesRead)^, READ_BYTES);
|
|||
if n > 0 then
|
|||
begin
|
|||
Inc(BytesRead, n);
|
|||
Write('.');
|
|||
end;
|
|||
until n <= 0;
|
|||
M.SetSize(BytesRead);
|
|||
S.LoadFromStream(M);
|
|||
ssalida:=trim(S.text);
|
|||
except
|
|||
ssalida:='Error al ejecutar proceso. Comando o parámetros no validos';
|
|||
end;
|
|||
finally
|
|||
S.Free;
|
|||
P.Free;
|
|||
M.Free;
|
|||
result:=ssalida;
|
|||
end;
|
|||
end;
|
|||
constructor Tservidor.create(archivoini:string='/etc/adtosadmin.conf');
|
|||
begin
|
|||
inherited create;
|
|||
if FileExists(archivoini) then
|
|||
LeerSetupIni(archivoini);
|
|||
end;
|
|||
procedure Tservidor.LeerSetupIni(archivo:string);
|
|||
var
|
|||
FicheroIni:TMemIniFile;
|
|||
i:integer;
|
|||
begin
|
|||
try
|
|||
FicheroIni:=TMemIniFile.create(archivo);
|
|||
try
|
|||
with FicheroIni do
|
|||
begin
|
|||
g_equipos_lista:=0;
|
|||
setlength(g_ips_equipos,NUMERO_EQUIPOS_POSIBLES);
|
|||
SetLength(g_ips_servidores_aula,NUMERO_EQUIPOS_POSIBLES);
|
|||
for i:=0 to NUMERO_EQUIPOS_POSIBLES-1 do
|
|||
begin
|
|||
g_ips_equipos[i]:=ReadString('IP','Aula '+ NumOrdLet(i),'');
|
|||
g_ips_servidores_aula[i].nombre:=ReadString('Nombre','Aula '+ NumOrdLet(i),'');
|
|||
g_ips_servidores_aula[i].ip:=ReadString('IP','Aula '+ NumOrdLet(i),'');
|
|||
g_ips_servidores_aula[i].mac:=ReadString('MAC','Aula '+ NumOrdLet(i),'');
|
|||
g_ips_servidores_aula[i].dominio:=ReadString('Dominio','Aula '+ NumOrdLet(i),'');
|
|||
g_ips_servidores_aula[i].curso:=ReadString('Curso','Aula '+ NumOrdLet(i),'');
|
|||
if trim(g_ips_servidores_aula[i].nombre)<>'' then g_equipos_lista:=i+1;
|
|||
end;
|
|||
end;
|
|||
finally
|
|||
setlength(g_ips_equipos,g_equipos_lista);
|
|||
SetLength(g_ips_servidores_aula,g_equipos_lista);
|
|||
FicheroIni.free;
|
|||
end;
|
|||
except
|
|||
writeln('Error al cargar datos');
|
|||
end;
|
|||
end;
|
|||
end.
|
|||