1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Programa Urgente!

Discussão em 'Programação' iniciada por Morphine0225, 29 de Junho de 2007. (Respostas: 7; Visualizações: 903)

  1. Morphine0225

    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
     
  2. slack_guy

    slack_guy Power Member

    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/)[email protected]=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: 29 de Junho de 2007
  3. K0mA

    K0mA Power Member

    Tenta fazer isso com VbScript, é o indicado.

    MacAdress
    IP
    ...
     
  4. brazuca

    brazuca Power Member

    segue o conselho do slack_guy
     
  5. mokojin

    mokojin Power Member

    Outra opção, essa informação há teoricamente de estar no servidor de DHCP, basta a lá ires buscar.
     
  6. kazuza

    kazuza Power Member

    codigo vbscript no login script ...
     
  7. SoundSurfer

    SoundSurfer Power Member

    Por aqui usam o OCS
     
  8. SFSS

    SFSS Power Member

    .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: 27 de Setembro de 2007

Partilhar esta Página