Proyecto

General

Perfil

Descargar (3,57 KB) Estadísticas
| Rama: | Revisión:
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 .