webForumDet fria alternativet

Litet projekt, TFTP som pratar med SQL Server, C#

.NETur .NET

83 svar · 2 297 visningar · startad av Gildebrand

Medlem sedan juni 2009920 inlägg
Frågan#1

Hejsan!

Jag har ett litet projekt på gång. Jag tänker modifiera en färdig TFTP server i C# och ändra så att olika datorer får olika filer.

Ni får rätta mig om jag har fel men det är såhär jag tänker mig att det funkar med TFTP och PXE-boot.

En dator som PXE-bootar tar först kontakt med en DHCP och får en ip-adress. Den får sedan reda på vilken server (TFTP) den ska kontakta och vilken fil som den ska ladda ner.

Jag vill att TFTP-servern ska kontakta SQL-Servern (SQL Server 2008), och utifrån datorns mac-adress ge datorn filerna som gäller för just den datorn.

Om det finns enklare sätt att göra detta rakt av i windows så gör jag gärna det istället för att programmera.

Men jag har googlat lite och hittat en färdig TFTP server som jag hade tänkt utgå ifrån. http://blog.chadalbrecht.com/post/2005/12/18/TFTP-Server-Example.aspx

Om det går att göra detta med Windows TFTP server så tar jag tacksamt emot tips.

Annars bara lite tankar om projektet.

Medlem sedan juni 20014 290 inlägg
#2

Att tänka på är att om det finns en router mellan clienten och tftp servern så kommer inte clientens macadress att synas utan tftp servern ser routerns macadress.

Sedan i första läget så hämtar (vad jag vet) clienten bara en utpekad fil/image/program som sedan körs. Därefter kan det programmet hämta resten via något lämpligt protokoll.

/edit: svenskan ;)

Medlem sedan juni 2009920 inlägg
#3

Tack för det tipset. Tror dock inte att det kommer vara någon router, utan bara switchar.

Medlem sedan juli 2003555 inlägg
#4

Fundering, det finns netboot pxe som du kan köra ifrån t.ex usb, diskett, hårddisk etc. Det borde du kunna köra via inbyggda tftp-servern. Den pxen kan sedan hämta image ifrån t.ex en webbserver. Gissningsvis kan man kanske skicka med parametrar, t.ex mac-adress, där. Sedan är det upp till scriptet på servern att skicka tillbaka rätt image. Som bonus så kan du knacka i valfritt språk, använda vältestad tftp-server, klara burkar utan inbyggd pxe på nätverkskortet och köra tillförlitligt över routrar :)

Medlem sedan juni 2009920 inlägg
#5

Det låter helt klart intressant Onkelborg :)

Jag googlade lite men tror inte att jag hittade det du pratar om. Får gärna sparka mig i rätt riktning :)

Men pratar du om någon färdig produkt som går att anpassa?

Medlem sedan juni 2009920 inlägg
#6

Hur gör jag för att få mina datorer att hämta ip från DHCP servern som jag satt upp istället för routern som jag kör nu?

Medlem sedan juli 2003555 inlägg
#7

Jepp, etherboot.org är ett sådant intressant projekt.

Titta på följande sida: http://etherboot.org/wiki/commandline

Citerar från sidan: "http://${next-server}/boot.php?mac=${net0/mac}", där det som står inom ${ och } är att betrakta som "variabler" som trycks in under körning. Etherboot i sig går att köra på en rad olika sätt, och när det väl körs så kan den göra en rad olika saker :)

Medlem sedan juli 2003555 inlägg
#8

Stäng av DHCP-servern i routern bara så ska det fungera

Medlem sedan juni 2009920 inlägg
#9

Försöker sätta mig in lite granna i Etherboot.

Om jag har förstått det helt rätt så Etherboot enbart ett klientprogram och inget på serversidan, utan kan vara precis som i ditt exempel med php-filen som anropades.

Tänkte dock försöka köra ASP.NET då det inte kräver några tredjepartsprogram på serversidan.

Har inte möjlighet till att köra Etherboot från medie på klienterna utan det får laddas in över nätverket.

Vad ska det vara för format på filerna som man skickar ut till klienterna mha PXE? Funkar det med någon sorts image?

Ska försöka sätta upp någon TFTP server nu i Windows 2003, hittade lite inställningar för det under DHCP.

Medlem sedan juli 2003555 inlägg
#10

Jepp, etherboot är ett rent klientprogram. Det går i sin tur att modifera det lite om man vill, t.ex. lägga in olika images ifrån början för offline-bootning, sätta upp för access till nätverket via WLAN osv.

ASP.NET gillar jag, knackar själv främst C# (även om jag precis börjat knacka php också), det passar nog bra till det här. Förslagsvis gör du en generic handler (*.ashx) som innehåller bara det mest nödvändiga för att spotta ut saker och ha total kontroll.

Jepp, jag tänkte något i stil med att etherboot skulle laddas via nätverket (om de klarar det, men det antar jag att de gör med tanke på frågeställningen), vilket ger fördelen att du enkelt kan konfigurera om gPXE (dvs. etherboot) utan att behöva uppdatera några klienter. Se http://www.etherboot.org/wiki/pxechaining

Jepp, det som skickas ut ska vara en image. Vad är det för operativsystem det handlar om?

Medlem sedan juni 2009920 inlägg
#11

Det är nu till att börja med WindowsXP som ska ut. Blir alltså "Ghosts" som ska skickas ut, som dock har sysprep och sysprep.inf på sig. Kanske går att få Etherboot att kopiera filer över nätverket?

Medlem sedan juli 2003555 inlägg
#12

Ah, hm.. Jag tror att den inbyggda i Windows kör så att den skickar ut en image som är kapabel att köra nätverk + sambaprotokollet, sedan mountar den en delad mapp på servern och drar igång ett setupprogram därifrån. Det setupprogrammet sköter sedan själv om att kopiera filer osv, är inte så insatt i detaljerna där..

Ska det vara olika sysprep.inf för olika datorer? Eller helt olika images?

Medlem sedan juni 2009920 inlägg
#13

>>Ska det vara olika sysprep.inf för olika datorer? Eller helt olika images?

Precis, tanken är att alla datorer som ska ha Windows XP ska köras från samma image, men att sysprep.inf ska vara olika för olika datorer, så att man kan få olika datornamn, och olika drivisar.

Medlem sedan jan. 2001373 inlägg
#14

Cool idé

har du en windows server på plats kan jag rekommendara att fördjupa sig i
RIS. Inte lika roligt men väldigt effektvt och relativt enkelt.

http://technet.microsoft.com/en-us/library/cc786442(WS.10).aspx

Medlem sedan juni 2009920 inlägg
#15

Jo RIS känner jag till. Men det är ju inte lika kul :D

Dessutom har man inte samma möjligheter att anpassa systemet så att det blir exakt som man vill.

Medlem sedan juni 20014 290 inlägg
#16

Titta på WDS från Microsoft (ersätter RIS) http://technet.microsoft.com/en-us/library/cc766320(WS.10).aspx det kanske är något?

Medlem sedan juni 2009920 inlägg
#17

Känner redan till allt det där. Vill göra något eget

Medlem sedan juli 2003555 inlägg
#18

Hm, jadu.. http://www.informit.com/articles/article.aspx?p=102260&seqNum=6 står lite om vilka parametrar man kan skicka med till installationsprogrammet, men vete sjutton hur du ska kunna skicka med dem..

De idéer jag är inne på just nu är:
a) Lyckas "skapa" en "diskettstation" eller en "cd-läsare" som levererar valfri fil, injectar sig själv i bios innan start av windowsinstallationen. Inga parameterar behöver skickas till windows installationsprogram. Krånglig, om en möjlig, väg att gå..?
b) Se om det går att boota installationen ifrån ms-dos. Skapa en nätverksenablad boot-diskett/cd för ms-dos. Titta på http://nu2.nu/bootcd/#cdromsi Funderar på om du kan modifiera lite och få en bootbar image som du kan skicka ut, och att du sedan lägger över uppgiften att få mac-adress=>sysprep.inf på dos: dos kan sedan mounta rätt utdelade mappar med net use och dra igång installationsprogrammet för windows med rätt parametrar..?

Medlem sedan juni 2009920 inlägg
#19

Jag har ett separat program som ska generera inf-filerna. Jag behöver bara trycka ut de till rätt datorer.

1. Datorn startas
2. Datorn pxe-bootar.
3. Etherboot laddas in.
4. Etherboot laddar hem lite filer som ska kopiera över ghosten, samt hämtar sysprep.inf som matchar den datorn.

Menade du i ditt tidigare inlägg att man kan göra en asp.net sida som returnerar filer som matchar den datorn.

Så om Etherboot försöker gå in på index.aspx?mac={macadress} så kollar index.aspx efter en post i databasen över vart konfigurationsfilerna för {macadress} ligger och returnerar dessa till datorn

Medlem sedan juli 2003555 inlägg
#20

Nja, det är inte så enkelt. Du måste nog starta dos först, och därifrån ladda hem sysprep.inf/leta rätt på sökvägen dit, sedan massa upp mappen med installationsprogrammet med net use, och sedan starta det med valfria parametrar

145 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)