Pak Multiple IPs van servers op afstand - ASP.NET MVC3

stemmen
1

op zoek naar wat advies en als iemand weet of wat ik wil doen is zelfs mogelijk. Laat me eerst het scenario uit te leggen.

Belangrijkste WebServer :

  • Windows Server 2008 R2
  • IIS 7.5
  • .NET 4.0 Framework
  • ASP.NET MVC3 Application

Server Cluster (x10-servers) :

  • Windows Server 2003 / Windows Server 2008 R2
  • IIS 6 / IIS 7.5
  • .NET 2.0+ Framework
  • Eerste NIC heeft een fysieke IP-adres van de server
  • Tweede NIC heeft 10 Virtual IP adressen elk voor een website in IIS Manager

Wat ik probeer te doen is om de MVC3 website draait op de Main WebServer gebruiken om verbinding met de server cluster, en een lijst van virtuele IP-adressen op elke server en vervolgens opslaan in een MS SQL-database. Is dit mogelijk en kan het worden gedaan door middel van een .NET website? Ik geloof dat ik kan proberen het schrijven van een powershellmanuscript als elke server heeft powershell 1+ op.

De vraag is gesteld op 23/10/2013 om 18:10
user
In andere talen...                            


1 antwoorden

stemmen
2

Hieronder vindt u een code die WMI gebruikt om alle IP-adressen toegewezen aan alle NIC's op een server te vinden. U kunt kijken op de andere velden beschikbaar zijn in de Win32_NetworkAdapterConfigurationtabel hier .

Merk op dat dit niet snel genoeg om live uitgevoerd vanaf een webpagina zou kunnen zijn. Ik heb iets dergelijks werken, maar ik heb een geplande taak gaan praten met al mijn servers eenmaal per dag. Dan is de webpagina gewoon leest de informatie uit een database.

Merk ook op dat deze code gaat ervan uit dat de huidige gebruiker voldoende toegang op de externe servers heeft. Dit is een reden om er een geplande taak te maken. U kunt de taak uitvoert als beheerder om de gegevens te verzamelen, en vervolgens een regelmatige IIS gebruiker kan lezen uit de database. Anders moet je de gebruiker die IIS loopt onder het voldoende rechten te geven te veranderen.

// You'll need to reference "System.Management" for this to work...
var server = "your server name";
var scope = new System.Management.ManagementScope(@"\\" + server + @"\root\cimv2");
scope.Connect();

using (var searcher = new System.Management.ManagementObjectSearcher(scope,
        new System.Management.ObjectQuery(
            "Select Caption, IPAddress FROM Win32_NetworkAdapterConfiguration")))
{

    using (var children = searcher.Get())
    {
        if (children.Count > 0)
        {
            foreach (var item in searcher.Get())
            {
                var nicName = item["Caption"];
                var ips = item["IPAddress"] as string[];

                if (ips != null)
                {
                    Console.WriteLine(nicName);
                    foreach (var ip in ips)
                    {
                        Console.WriteLine("   " + ip);
                    }
                }
            }
        }
    }
}
antwoordde op 23/10/2013 om 20:08
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more