desarrollosconsejeria/adtos-server/1.7-0/serveradtosserver/globales.pas @ 23a384b9
23a384b9 | Elisa | unit globales ;
|
|
{$mode objfpc}{$H+}
|
|||
interface
|
|||
uses
|
|||
process, Classes, StrUtils, SysUtils,clservidor,IniFiles ;
|
|||
type
|
|||
TEquipos_Alumnos=record
|
|||
nombre:String;
|
|||
ip:String;
|
|||
mac:String;
|
|||
dominio:String;
|
|||
curso:String;
|
|||
end;
|
|||
var
|
|||
miservidor:TServidor;
|
|||
g_equipo_actualizado:Boolean=true;
|
|||
g_contador:integer=950;
|
|||
g_equipos_lista:integer=0;
|
|||
g_ip_conexion:String='';
|
|||
g_ips_servidores_aula:Array of TEquipos_Alumnos;
|
|||
g_ips_equipos:array of string;
|
|||
function HallarDato1(Cmd:string):String;
|
|||
procedure Ejecutar1 (comando:string);
|
|||
function NumOrdLet(num:integer):string;
|
|||
procedure actualizaDatosEquipos(archivoini:string='/etc/adtosadmin.conf');
|
|||
implementation
|
|||
function NumOrdLet(num:integer):string;
|
|||
var
|
|||
letraord:string;
|
|||
begin
|
|||
num:=succ(num);
|
|||
letraord:=ifthen(num<10,'0'+inttostr(num),inttostr(num));
|
|||
result:=letraord;
|
|||
end;
|
|||
procedure actualizaDatosEquipos(archivoini:string='/etc/adtosadmin.conf');
|
|||
var
|
|||
FicheroIni:TMemIniFile;
|
|||
i:integer;
|
|||
begin
|
|||
try
|
|||
FicheroIni:=TMemIniFile.create(archivoini);
|
|||
try
|
|||
with FicheroIni do
|
|||
begin
|
|||
WriteInteger('Centro', 'Numero equipos registrados',g_equipos_lista);
|
|||
for i:=0 to g_equipos_lista-1 do
|
|||
begin
|
|||
WriteString('Nombre','Aula '+ NumOrdLet(i),g_ips_servidores_aula[i].nombre);
|
|||
WriteString('IP','Aula '+ NumOrdLet(i),g_ips_servidores_aula[i].ip);
|
|||
WriteString('MAC','Aula '+ NumOrdLet(i),g_ips_servidores_aula[i].mac);
|
|||
WriteString('Dominio','Aula '+ NumOrdLet(i),g_ips_servidores_aula[i].dominio);
|
|||
WriteString('Curso','Aula '+ NumOrdLet(i),g_ips_servidores_aula[i].curso);
|
|||
end;
|
|||
UpdateFile;
|
|||
end;
|
|||
finally
|
|||
FicheroIni.free;
|
|||
end;
|
|||
except
|
|||
writeln('Error al cargar datos');
|
|||
end;
|
|||
end;
|
|||
procedure Ejecutar1(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 HallarDato1(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>>/dev/null');
|
|||
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;
|
|||
end .
|