PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nat config an router per HTTP (curl)?



blubberus
25.04.05, 23:38
Hi,

ich hab herrausgefunden, das ich bei meinem Router mit einem HTTP request die NAT tabelle ändern kan, habs mit einem PHP script getestet. nur will ich nicht noch zusätzlich zum cron auch noch Apache und PHP ständig umsonst laufen lassen.
Nun zum eigentlichen Problem oder frage, wie kann ich den unten stehenden header genau so mit curl abschicken? Nach möglichkeit so: curl -para (unten stehender string)




POST /Form/SUASrv HTTP/1.1
User-Agent: Opera/7.54 (Windows NT 5.1; U) [de]
Host: 192.168.110.1
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: de;q=1.0,en;q=0.9
Accept-Charset: windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Authorization: Basic Nhg90fjFddsdRf=
Referer: http://192.168.110.1/SUASrv.html
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
Content-Type: application/x-www-form-urlencoded
Content-Length: 72

SUADefault=0.0.0.0&SUAPortNo=21&SUAPortNoEnd=21&SUAServerAddr=192.168.110.154......&sysSubmit=Apply




und noch eine frage, ich hab da ein script das sich immer meine abhörenden UDP ports eine programms anschaut, mach das im script mit `netstat -abo -p udp` das dauert bei meinem CygWin relativ lange, kennt jemand eine schnellere alternative? Das Prog sollte mir alle UDP ports von einem laufen Programm zurückgeben.


THX

tschloss
26.04.05, 07:10
Wenn Du etwas per HTTP auf den Router schickst, warum mußt du dann auf deinem PC Apache und Web-Server laufen lassen? Wozu PHP?

Zu dem Aufruf kann ich nichts sagen, mußt du halt probieren und ggf. mit dem Resultat wieder hierher kommen.
Im Prinzip hätte ich das betreffende Formular aus der Web-Admin-Oberfläche des Routers herauskopiert und mit vorbelegten Values an den Router gepostet/gegetted. Irgendwo wird es aber noch eine Passwort-Abfrage geben.

Oder habe ich das Problem falsch verstanden?
Was willst Du eigentlich an den Tabellen verändern?

Greetz
Thomas

pS: was für ein Router ist es denn?

marce
26.04.05, 07:25
man curl würde Dir den Parameter -d empfehlen...

blubberus
26.04.05, 15:10
@ tschloss
Ich hatte ein php script bei dem ich einfach ip adresse und den HTTP request als parameter übergeben hatte und der hat mir dann die entsprechenden werte im Router geandert.

Wenn du dir nochmal meinen code anschaust wirst du sehen, das da alles drin steht, was auch ein Browser (in dem Fall Opera) dem Router schicken würde.
(hab deshalb die werte etwas geändert ;))

Router ist ein Netgear



@marce

jo, parameter -d war schon richtig, ich schreib mal meine nun funktionierende lösung, vielleicht kanns ja jemand brauchen.


curl -X "POST"
192.168.110.1/Form/SUASrv
-H"Authorization: Basic Nhg90fjFddsdRf="
-H"Referer: http://192.168.110.1/SUASrv.html"
-H"Connection: Keep-Alive, TE"
-H"TE: deflate, gzip, chunked, identity, trailers"
-H"Content-Type: application/x-www-form-urlencoded"
-d"SUADefault=0.0.0.0&SUAPortNo=21&SUAPortNoEnd=21&SUAServerAddr=192.168.110.154......&sysSubmit=Apply"



aber ich hab jetzt nocheinmal eine frage, und zwar wie ist es nochmal, wenn ich in den Prompt folgendes eingebe:



$ funktion\
> "parameter1\
> parameter2\
.
.
> parameterN"

ist es das gleiche wie:



$ funktion "parameter1 parameter2 . . parameterN"

aber wie mache ich es wenn ich :



$ funktion "parameter mit
festen umbruch haben will,
was muss dann gemacht werden
damit der Befehl erst am ende dieses Strings ausgeführt wird?"


THX

PS. mein problem mit der Auslastung von netstat besteh immernoch, nur so nebenbei.