Programa Urgente!

Morphine0225

Power Member
Boas! Preciso de fazer um programa mesmo urgentemente e não sei por onde começar... Tou a estagiar numa empresa e tenho de ir a TODOS os postos de trabalho para sacar o IP, DNS, USER, S.O., MAC Address... Queria fazer tipo um executável que tivesse partilhado na rede e que eu pudesse aceder depois fazer um save com os dados desse PC, mas que tenha eu de ir pc a pc executar esse programa... Acrescentar o nome da pessoa que está nesse pc, marca a e modelo do pc mas isso já sou eu que escrevo depois... Ninguém me pode ajudar? Preciso mesmo disto com a máxima urgência! São a volta de 300 PC's!!! Tou a desesperar!!:lol:

Abraço!

Morphine0225
 
Com a pouca informação que deste, e partido dos pressupostos que tens um servidor web interno e que todos os computadores estão ligados à rede e têm acesso a esse servidor web, eu faria o seguinte:

1. criava um formulário ao qual acedia via browser
2. nesse formulário o campo IP e SO podiam ser preenchidos por default com os valores de REMOTE_ADDR e HTTP_USER_AGENT (filtrado).
3. como cada computador pode ter mais de um USER, talvez seja aconselhável teres um campo TEXTAREA e colocares os dados manualmente - copy&paste?
4. como cada computador pode ter mais de uma placa de rede deverás ter pelo menos 5 campos para MAC Address
5. idem para os restantes campos que precisas.

Em cada posto acedia ao form, preenchia e gravava.
No final, teria um relatório com os dados recolhidos.

Agora, como é que sacas os users e mac addresses de cada computador, não sei. Não percebo patavina de windows.

Em Linux faria qualquer coisa como:
para lista de users:
Código:
$ cat /etc/passwd | perl -le 'for(<>){print $1 if ~/(\w+).+/}'
para lista de MAC ADDR:
Código:
# ifconfig -a | perl -le 'for(<>){if($_=~/HW/){@ma=split;print $ma[0]," ", $ma[4]}}'
Por outro lado, outra solução poderia ser um programeta - tipo vírus - que corria em cada posto e te enviava os dados para uma máquina central. Cada utilizador teria de executar um ficheiro que mandavas via mail. Como fazer esse programeta? não faço ideia e em Linux provavelmente nem funcionaria.

Podias também usar SNMP.

As opções são várias. Depende dos teus conhecimentos, tempo e infraestrutura existente.
 
Última edição:
.NET

Boas,

Podes tentar fazer o seguinte, quando fazes um ping para um determinado IP ou Nome na rede, se executares o "arp -a" na minha de comandos vais ter uma lista dos ip's e mac address's das máquinas.

Podes tentar desenvolver alguma coisa que faça um "ping xpto" e depois com o "arp -a" tenhas os mac's dessas máquinas.

Tens também a possibilidade de fazer isso em .NET:

........... Retirado do forum MSDN ...............

Import the System.Management
Import System.Management.Instrumentation

Dim theManagementScope as new ManagementScope("\\" & ComputerName & "\root\cimv2")
Dim theQueryString as new string = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 1"

Dim theObjectQuery as new ObjectQuery(theQueryString)

Dim theSearcher as new ManagementObjectSearcher(theManagementScope, theObjectQuery)
Dim theResultsCollection as ManagementObjectCollection = theSearcher.Get()

for each currentResult as ManagementObject in theResultsCollection
MessageBox.Show(currentResult("MacAddress").ToString())
next
.....................................................

Para ter o UserName(Na máquina local)

My.User.Name

....................................................

Ver Sistema Operativo nunca testei com outros sistemas operativos, mas deve funcionar. Retirado de um forum na web.

Dim strText As String = ""
Dim scope As ManagementScope
scope = New ManagementScope("\\192.168.0.1\root\cimv2")
scope.Connect()
Dim query As ObjectQuery
query = New ObjectQuery("SELECT * FROM Win32_OperatingSystem")
Dim searcher As ManagementObjectSearcher
searcher = New ManagementObjectSearcher(scope, query)
Dim queryCollection As ManagementObjectCollection
queryCollection = searcher.Get()

Dim m As ManagementObject
For Each m In queryCollection
If InStr(m("Caption"), "Server 2003") Then
strText = m("Caption")
If m("ServicePackMajorVersion") = "2" Then
strText = strText & ", Service Pack 2"
End If
MsgBox(strText)
Else
MsgBox("This computer is not running Windows Server 2003.")
End If
Next
...................................................................

Normalmente quando quero fazer alguma coisa e não sei, uso o google como pesquisa do tipo(how to get the remote ip computer .net),(how to get the remote mac address .net), etc....
Vão aparecer imensas páginas de código, vais aproveitando um bocadinho aqui outro ali, no final vais ficar a perceber o que estas a fazer e como fazer. ;)

Abraços
 
Última edição:
Back
Topo