Commit 874b9b0a2000ddcc58042c8acedaa0d5674c49b8
1 parent
b0915fe9
Exists in
master
Adiciona coleta de hardware no Agente e move coleta de software para a operação correta
git-svn-id: http://svn.softwarepublico.gov.br/svn/cacic/cacic/trunk/agente-windows@1457 fecfc0c7-e812-0410-ae72-849f08638ee7
Showing
1 changed file
with
98 additions
and
21 deletions
Show diff stats
gercols/gercols.dpr
| ... | ... | @@ -679,6 +679,28 @@ begin |
| 679 | 679 | Result := outString; |
| 680 | 680 | end; |
| 681 | 681 | |
| 682 | +// Procedimento que executa a coleta de hardware | |
| 683 | +Function ColetaHardware: String; | |
| 684 | +var | |
| 685 | + outString: String; | |
| 686 | +begin | |
| 687 | + // Coletas de todos os atributos de hardware | |
| 688 | + outString := fetchWmiValues('Win32_Keyboard', 'Availability,Caption,Description,InstallDate,Manufacturer,Name', objCacic.getLocalFolderName); | |
| 689 | + outString := outString + fetchWmiValues('Win32_PointingDevice', 'Availability,Caption,Description,InstallDate,Manufacturer,Name', objCacic.getLocalFolderName); | |
| 690 | + outString := outString + fetchWmiValues('Win32_PhysicalMedia ', 'Caption,Description,InstallDate,Name,Manufacturer,Model,SKU,SerialNumber,Tag,Version,PartNumber,OtherIdentifyingInfo,Capacity,MediaType,MediaDescription', objCacic.getLocalFolderName); | |
| 691 | + outString := outString + fetchWmiValues('Win32_BaseBoard', 'Caption,ConfigOptions,Depth,Description,Height,HostingBoard,InstallDate,Manufacturer,Model,Name,OtherIdentifyingInfo,PartNumber,Product,RequirementsDescription,SerialNumber,SKU,SlotLayout,SpecialRequirements,Tag,Version,Weight,Width', objCacic.getLocalFolderName); | |
| 692 | + // Tenho que dividir a string em dois pedaços porque o Delphi não aceita strings individuais com mais de 255 caracteres | |
| 693 | + outString := outString + fetchWmiValues('Win32_BIOS', 'BiosCharacteristics,BIOSVersion,BuildNumber,Caption,CodeSet,Description,IdentificationCode,InstallDate,Manufacturer,Name,OtherTargetOS,PrimaryBIOS,ReleaseDate,SerialNumber,SMBIOSBIOSVersion,SMBIOSMajorVersion,SMBIOSMinorVersion,' + 'BIOSPresent,SoftwareElementID,TargetOperatingSystem,Version', objCacic.getLocalFolderName); | |
| 694 | + outString := outString + fetchWmiValues('Win32_MemoryDevice', 'Access,Availability,BlockSize,Caption,Description,DeviceID,EndingAddress,InstallDate,Name,NumberOfBlocks,PNPDeviceID,Purpose,SystemLevelAddress,SystemName', objCacic.getLocalFolderName); | |
| 695 | + outString := outString + fetchWmiValues('Win32_PhysicalMemory', 'BankLabel,Capacity,Caption,DataWidth,Description,DeviceLocator,FormFactor,InstallDate,InterleaveDataDepth,InterleavePosition,Manufacturer,MemoryType,Model,Name,OtherIdentifyingInfo,PartNumber,PositionInRow,' + 'SerialNumber,SKU,Speed,Tag,TotalWidth,TypeDetail,Version', objCacic.getLocalFolderName); | |
| 696 | + outString := outString + fetchWmiValues('Win32_Processor', 'AddressWidth,Architecture,Availability,Caption,CreationClassName,DataWidth,Description,DeviceID,ExtClock,Family,InstallDate,L2CacheSize,L2CacheSpeed,L3CacheSize,L3CacheSpeed,Level,LoadPercentage,Manufacturer,'+ 'MaxClockSpeed,Name,NumberOfCores,NumberOfLogicalProcessors,OtherFamilyDescription,PNPDeviceID,ProcessorId,ProcessorType,Revision,Role,SocketDesignation,SystemName,UniqueId,UpgradeMethod,Version,VoltageCaps', objCacic.getLocalFolderName); | |
| 697 | + outString := outString + fetchWmiValues('Win32_Printer', 'Attributes,Availability,Caption,CharSetsSupported,Comment,CurrentCharSet,Default,Description,DeviceID,Direct,DriverName,HorizontalResolution,InstallDate,JobCountSinceLastReset,KeepPrintedJobs,LanguagesSupported,' + 'Local,Location,MarkingTechnology,MaxCopies,MaxNumberUp,MaxSizeSupported,MimeTypesSupported,Name,Network,PaperSizesSupported,PaperTypesAvailable,Parameters,PNPDeviceID,PortName,PrintProcessor,' + 'ServerName,Shared,ShareName,SpoolEnabled,SystemName,VerticalResolution,WorkOffline', objCacic.getLocalFolderName); | |
| 698 | + | |
| 699 | + // Retorna uma string com todas as coletas | |
| 700 | + Result := outString; | |
| 701 | + | |
| 702 | +end; | |
| 703 | + | |
| 682 | 704 | |
| 683 | 705 | procedure executeGerCols; |
| 684 | 706 | var boolFound : boolean; |
| ... | ... | @@ -706,6 +728,8 @@ var strActionDefinition, |
| 706 | 728 | strTeServidor, |
| 707 | 729 | strTripa, |
| 708 | 730 | tstrColetaSoftware, |
| 731 | + tstrColetaHardware, | |
| 732 | + tstrColetaComputador, | |
| 709 | 733 | strValorChavePerfis : String; |
| 710 | 734 | |
| 711 | 735 | intAux4, |
| ... | ... | @@ -728,7 +752,7 @@ Begin |
| 728 | 752 | Try |
| 729 | 753 | |
| 730 | 754 | // Parâmetros possíveis (aceitos) |
| 731 | - // /coletas => Chamada para ativação das coletas | |
| 755 | + // /collect => Chamada para ativação das coletas | |
| 732 | 756 | // /recuperaSR => Chamada para tentativa de recuperação do módulo srCACIC |
| 733 | 757 | // USBinfo => Informação sobre dispositivo USB inserido/removido |
| 734 | 758 | // RCActions => Informação sobre ações durante conexão de suporte remoto |
| ... | ... | @@ -935,12 +959,6 @@ Begin |
| 935 | 959 | |
| 936 | 960 | strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',AntiVirus=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(strColetaAtual)); |
| 937 | 961 | |
| 938 | - objCacic.writeDebugLog('executeGerCols: Executando coleta de Software -> '); | |
| 939 | - tstrColetaSoftware := SoftwareList; | |
| 940 | - | |
| 941 | - // Adiciona variáveis da coleta de software na requisição | |
| 942 | - strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',SoftwareList=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaSoftware))); | |
| 943 | - | |
| 944 | 962 | Except |
| 945 | 963 | on E : Exception do |
| 946 | 964 | Begin |
| ... | ... | @@ -950,6 +968,79 @@ Begin |
| 950 | 968 | End; |
| 951 | 969 | End; |
| 952 | 970 | End |
| 971 | + else If (tstringsActions[intLoopActions] = 'col_hard') then | |
| 972 | + Begin | |
| 973 | + Try | |
| 974 | + Inc(intTotalExecutedCollects); | |
| 975 | + | |
| 976 | + // Insere aqui a ação da coleta | |
| 977 | + objCacic.writeDebugLog('executeGerCols: Executando coleta de Hardware -> '); | |
| 978 | + //tstrColetaHardware := ColetaHardware; | |
| 979 | + | |
| 980 | + // Coletas de todos os atributos de hardware | |
| 981 | + tstrColetaHardware := fetchWmiValues('Win32_Keyboard', objCacic.getLocalFolderName, 'Availability,Caption,Description,InstallDate,Name'); | |
| 982 | + strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',Win32_Keyboard=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaHardware))); | |
| 983 | + | |
| 984 | + tstrColetaHardware := fetchWmiValues('Win32_PointingDevice', objCacic.getLocalFolderName, 'Availability,Caption,Description,InstallDate,Manufacturer,Name'); | |
| 985 | + strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',Win32_PointingDevice=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaHardware))); | |
| 986 | + | |
| 987 | + tstrColetaHardware := fetchWmiValues('Win32_PhysicalMedia ', objCacic.getLocalFolderName, 'Caption,Description,InstallDate,Name,Manufacturer,Model,SKU,SerialNumber,Tag,Version,PartNumber,OtherIdentifyingInfo,Capacity,MediaType,MediaDescription'); | |
| 988 | + strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',Win32_PhysicalMedia=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaHardware))); | |
| 989 | + | |
| 990 | + tstrColetaHardware := fetchWmiValues('Win32_BaseBoard', objCacic.getLocalFolderName, 'Caption,ConfigOptions,Depth,Description,Height,HostingBoard,InstallDate,Manufacturer,Model,Name,OtherIdentifyingInfo,PartNumber,Product,RequirementsDescription,SerialNumber,SKU,SlotLayout,SpecialRequirements,Tag,Version,Weight,Width'); | |
| 991 | + strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',Win32_BaseBoard=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaHardware))); | |
| 992 | + | |
| 993 | + // Tenho que dividir a string em dois pedaços porque o Delphi não aceita strings individuais com mais de 255 caracteres | |
| 994 | + tstrColetaHardware := fetchWmiValues('Win32_BIOS', objCacic.getLocalFolderName, 'BiosCharacteristics,BIOSVersion,BuildNumber,Caption,CodeSet,Description,IdentificationCode,InstallDate,Manufacturer,Name,OtherTargetOS,PrimaryBIOS,ReleaseDate,SerialNumber,SMBIOSBIOSVersion,SMBIOSMajorVersion,SMBIOSMinorVersion,' + 'SoftwareElementID,TargetOperatingSystem,Version'); | |
| 995 | + strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',Win32_BIOS=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaHardware))); | |
| 996 | + | |
| 997 | + tstrColetaHardware := fetchWmiValues('Win32_MemoryDevice', objCacic.getLocalFolderName, 'Access,Availability,BlockSize,Caption,Description,DeviceID,EndingAddress,InstallDate,Name,NumberOfBlocks,PNPDeviceID,Purpose,SystemLevelAddress,SystemName'); | |
| 998 | + strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',Win32_MemoryDevice=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaHardware))); | |
| 999 | + | |
| 1000 | + tstrColetaHardware := fetchWmiValues('Win32_PhysicalMemory', objCacic.getLocalFolderName, 'BankLabel,Capacity,Caption,DataWidth,Description,DeviceLocator,FormFactor,InstallDate,InterleaveDataDepth,InterleavePosition,Manufacturer,MemoryType,Model,Name,OtherIdentifyingInfo,PartNumber,PositionInRow,' + 'SerialNumber,SKU,Speed,Tag,TotalWidth,TypeDetail,Version'); | |
| 1001 | + strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',Win32_PhysicalMemory=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaHardware))); | |
| 1002 | + | |
| 1003 | + tstrColetaHardware := fetchWmiValues('Win32_Processor', objCacic.getLocalFolderName, 'AddressWidth,Architecture,Availability,Caption,DataWidth,Description,DeviceID,ExtClock,Family,InstallDate,L2CacheSize,L2CacheSpeed,Level,Manufacturer,MaxClockSpeed,Name,NumberOfCores,NumberOfLogicalProcessors,OtherFamilyDescription,PNPDeviceID,' + 'ProcessorId,ProcessorType,Revision,Role,SocketDesignation,SystemName,UniqueId,UpgradeMethod,Version'); | |
| 1004 | + strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',Win32_Processor=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaHardware))); | |
| 1005 | + | |
| 1006 | + tstrColetaHardware := fetchWmiValues('Win32_Printer', objCacic.getLocalFolderName, 'Attributes,Availability,Caption,CharSetsSupported,Comment,CurrentCharSet,Default,Description,DeviceID,Direct,DriverName,HorizontalResolution,InstallDate,JobCountSinceLastReset,KeepPrintedJobs,LanguagesSupported,' + 'Local,Location,MarkingTechnology,MaxCopies,MaxNumberUp,MaxSizeSupported,MimeTypesSupported,Name,Network,PaperSizesSupported,PaperTypesAvailable,Parameters,PNPDeviceID,PortName,PrintProcessor,' + 'ServerName,Shared,ShareName,SpoolEnabled,SystemName,VerticalResolution,WorkOffline'); | |
| 1007 | + strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',Win32_Printer=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaHardware))); | |
| 1008 | + // Adiciona variáveis da coleta de hardware na requisição | |
| 1009 | + //strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',Hardware=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaHardware))); | |
| 1010 | + | |
| 1011 | + strColetaAtual := strFieldsAndValuesToRequest; | |
| 1012 | + Except | |
| 1013 | + on E : Exception do | |
| 1014 | + Begin | |
| 1015 | + objCacic.writeDebugLog('executeGerCols: Lançando Exceção #12'); | |
| 1016 | + objCacic.writeExceptionLog(E.Message,E.ClassName,'Exceção #12 - ' + objCacic.getValueFromTags('te_descricao_breve',strActionDefinition)); | |
| 1017 | + objCacic.setValueToFile('Collects',tstringsActions[intLoopActions] + '_End' , '99999999', strGerColsInfFileName); | |
| 1018 | + End; | |
| 1019 | + End; | |
| 1020 | + End | |
| 1021 | + else If (tstringsActions[intLoopActions] = 'col_soft') then | |
| 1022 | + Begin | |
| 1023 | + Try | |
| 1024 | + Inc(intTotalExecutedCollects); | |
| 1025 | + | |
| 1026 | + // Insere aqui a ação da coleta | |
| 1027 | + objCacic.writeDebugLog('executeGerCols: Executando coleta de Software -> '); | |
| 1028 | + tstrColetaSoftware := SoftwareList; | |
| 1029 | + | |
| 1030 | + // Adiciona variáveis da coleta de software na requisição | |
| 1031 | + strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',SoftwareList=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaSoftware))); | |
| 1032 | + | |
| 1033 | + strColetaAtual := strFieldsAndValuesToRequest; | |
| 1034 | + Except | |
| 1035 | + on E : Exception do | |
| 1036 | + Begin | |
| 1037 | + objCacic.writeDebugLog('executeGerCols: Lançando Exceção #13'); | |
| 1038 | + objCacic.writeExceptionLog(E.Message,E.ClassName,'Exceção #13 - ' + objCacic.getValueFromTags('te_descricao_breve',strActionDefinition)); | |
| 1039 | + objCacic.setValueToFile('Collects',tstringsActions[intLoopActions] + '_End' , '99999999', strGerColsInfFileName); | |
| 1040 | + End; | |
| 1041 | + End; | |
| 1042 | + | |
| 1043 | + End | |
| 953 | 1044 | else If (tstringsActions[intLoopActions] = 'col_moni') then |
| 954 | 1045 | Begin |
| 955 | 1046 | Try |
| ... | ... | @@ -1402,13 +1493,6 @@ Begin |
| 1402 | 1493 | |
| 1403 | 1494 | strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',MonitoredProfiles=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(strColetaAtual)); |
| 1404 | 1495 | |
| 1405 | - // Adiciona coleta de software | |
| 1406 | - objCacic.writeDebugLog('executeGerCols: Executando coleta de Software -> '); | |
| 1407 | - tstrColetaSoftware := SoftwareList; | |
| 1408 | - | |
| 1409 | - // Adiciona variáveis da coleta de software na requisição | |
| 1410 | - strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',SoftwareList=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaSoftware))); | |
| 1411 | - | |
| 1412 | 1496 | Except |
| 1413 | 1497 | Begin |
| 1414 | 1498 | objCacic.setValueToFile('Collects',tstringsActions[intLoopActions] + '_End' ,'99999999', strGerColsInfFileName); |
| ... | ... | @@ -1449,13 +1533,6 @@ Begin |
| 1449 | 1533 | strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',' + tstringsClasses[intLoopClasses] + '=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(fetchWmiValues('Win32_' + tstringsClasses[intLoopClasses],objCacic.getLocalFolderName, objCacic.getValueFromTags(tstringsClasses[intLoopClasses] + '.Properties',strClassesAndProperties),objCacic.getValueFromTags(tstringsClasses[intLoopClasses] + '.WhereClause',strClassesAndProperties))))); |
| 1450 | 1534 | End; |
| 1451 | 1535 | |
| 1452 | - // Adiciona coleta de software | |
| 1453 | - objCacic.writeDebugLog('executeGerCols: Executando coleta de Software -> '); | |
| 1454 | - tstrColetaSoftware := SoftwareList; | |
| 1455 | - | |
| 1456 | - // Adiciona variáveis da coleta de software na requisição | |
| 1457 | - strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + ',SoftwareList=' + objCacic.replaceInvalidHTTPChars(objCacic.enCrypt(objCacic.replaceInvalidHTTPChars(tstrColetaSoftware))); | |
| 1458 | - | |
| 1459 | 1536 | strColetaAtual := strFieldsAndValuesToRequest; |
| 1460 | 1537 | Except |
| 1461 | 1538 | on E : Exception do | ... | ... |