if at 1st you don't succeed, blame your supervisor. D2 Account *deathbeforedis. HC account HC_Bachus
Steun Elkaar, Kopieer Nederlands Waar!
Ten tweede: je kunt gewoon een TCP socket connecten naar server @ port 23, en via plaintext Unix-commando's opsturen, dus geen telnet-objecten nodig en die mensen bij je zwammen uit hun nek
Ja duh, maar mensen die hun vraag zo formuleren zie ik nog niet zo snel op socket-niveau telnet (of erger nog, ssh) implementeren.curry684 schreef op 21 August 2003 @ 11:02:
Allereerst: lees even P&W FAQ - De "quickstart" door, topicstart noch topictitle voldoen echt aan de eisen hier
Ten tweede: je kunt gewoon een TCP socket connecten naar server @ port 23, en via plaintext Unix-commando's opsturen, dus geen telnet-objecten nodig en die mensen bij je zwammen uit hun nek
Pak een standaard-objectje en je bent klaar. (Pragmatisch denken curry...)
if at 1st you don't succeed, blame your supervisor. D2 Account *deathbeforedis. HC account HC_Bachus
1
2
3
4
5
6
| stuur "username" sleep(5000); stuur "password" sleep(5000); stuur "commando" sleep(5000); |
Dan kan 't nog wel eens knap lastig worden om alle info die je terug krijgt netjes te parsen. Is niet moeilijk, maar niet de moeite waard als er standaard-objecten bestaan en je helemaal niet bezig wilt met zulke ongein. (Bovendien moet je nog negotiaten over terminaltype en windowsize enzo...)
[ Voor 14% gewijzigd door Pooh op 21-08-2003 12:17 ]
Waarom die sleeps? Kan toch gewoon omstebuurt zenden en ontvangen en dan ben je in 5 regels code ingelogd?
Ehm? Hoop je. Wat als je na je username "pass" terugkrijgt, en pas 2 seconden later "word:" ?? (worst case scenario, maargoed... ga er niet vanuit dat de server doet wat je verwacht)curry684 schreef op 21 August 2003 @ 12:16:
* curry684 is 'm even kwijt....
Waarom die sleeps? Kan toch gewoon omstebuurt zenden en ontvangen en dan ben je in 5 regels code ingelogd?
[ Voor 17% gewijzigd door Pooh op 21-08-2003 12:18 ]
1
2
3
4
5
6
| stuur "username" sleep(5000); stuur "password" sleep(5000); stuur "commando" sleep(5000); |
Hmm beetje onhandig denk ik.
Maak van je afhandeling een statemachine die op een correct ontvangen antwoord weer verder gaat.
Overigens kan die winsock component van Microsoft heel goed een event afvuren wanneer er een antwoord komt. ( Itt het MSComm object werkt deze ( voor het grootste gedeelte ) wel goed. )
En anders doe je het pollen van de data met een timer.
Naja, hier moet je ook rekening mee houden als je het in Forth progt, vanaf een embedded controller. Als dit een onoverkomelijk probleem zou zijn zouden we alle communicatie nog via rooksignalen doen. ( Alhoewel, dan heb je ook niet een 1 keer een antwoordEhm? Hoop je. Wat als je na je username "pass" terugkrijgt, en pas 2 seconden later "word:" ?? (worst case scenario, maargoed... ga er niet vanuit dat de server doet wat je verwacht)
[ Voor 35% gewijzigd door farlane op 21-08-2003 12:25 ]
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
Tuurlijk is het onhandig, daarom poste ik het ook.farlane schreef op 21 augustus 2003 @ 12:22:
Hmm beetje onhandig denk ik.
Maak van je afhandeling een statemachine die op een correct ontvangen antwoord weer verder gaat.
Overigens kan die winsock component van Microsoft heel goed een event afvuren wanneer er een antwoord komt. ( Itt het MSComm object werkt deze ( voor het grootste gedeelte ) wel goed. )
En anders doe je het pollen van de data met een timer.
"wanneer er een antwoord komt" is dus het probleem. Na je login kun je een MOTD krijgen die rustig 20 regels lang kan zijn, in plaats van je verwachtte prompt. Als je dan meteen commando's gaat afvuren, komen ze niet over. Moet je dus expliciet prompts gaan parsen enzo, waarvoor je dus beter een standaard-objectje kunt gebruiken. Zelfde geldt voor foutmeldingen bij commando's.
Je gaat toch pas verder als dat wat je binnenkrijgt dat is wat je verwacht? Lijkt mee geen probleem eigenlijk.Poohbear schreef op 21 augustus 2003 @ 12:25:
[...]
Tuurlijk is het onhandig, daarom poste ik het ook.
"wanneer er een antwoord komt" is dus het probleem. Na je login kun je een MOTD krijgen die rustig 20 regels lang kan zijn, in plaats van je verwachtte prompt.
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
Ja, en dan ziet je prompt er ineens anders uit. Hebben ze de server aangepast (nieuwe hostname), dus is je prompt plotseling "gebruiker@nieuwehost$" ipv "gebruiker@oudehost$" (vandaar ook die lange MOTDfarlane schreef op 21 August 2003 @ 12:27:
[...]
Je gaat tock pas verder als dat wat je binnenkrijgt dat is wat je verwacht? Lijkt mee geen probleem eigenlijk.
Kortom: ik voorzie alweer allerlei haken en ogen. Mocht topicstarter die niet voorzien, dan mag hij 't van mij best zelf doen, mocht hij ze wel voorzien, dan stel ik voor dat hij een standaard-objectje uitkiest dat alle ongein voor hem afhandeld en waar hij gewoon commando's naar kan sturen.
(We hebben 't nog niet over terminal-negotiation enzo gehad).
Je stuurt toch pas wat zodra de server klaar is met zenden?Poohbear schreef op 21 augustus 2003 @ 12:32:
[...]
Ja, en dan ziet je prompt er ineens anders uit. Hebben ze de server aangepast (nieuwe hostname), dus is je prompt plotseling "gebruiker@nieuwehost$" ipv "gebruiker@oudehost$" (vandaar ook die lange MOTD) Snapt je zelfgefabriekte telnet-client er niks meer van, en wordt je scriptje niet meer uitgevoerd. Is best jammer.
Want om nu met een sleep oid te gaan gebruiken is helemaal erg, dan weet je helemaal niet zeker of de boodschap goed overkomt
Nogmaals, mijn Sleep-voorbeeld was een voorbeeld van hoe het NIET moet. Maar mijn ervaring leert me dat je, zelfs voor een simpel protocolletje als telnet (nouja, simpel, toch een stuk of 8 rfc'tjes), al snel meer tijd kwijt bent dan je had willen besteden. Bovendien wilde TS geen telnet-client schrijven, maar iets uitvoeren op een server. Nogmaals: het kan best met de hand, maar een kant-en-klaar component lijkt me, zeker in dit geval (lees topicstart nog eens), een eenvoudigere oplossing.Erkens schreef op 21 August 2003 @ 12:35:
[...]
Je stuurt toch pas wat zodra de server klaar is met zenden?
Want om nu met een sleep oid te gaan gebruiken is helemaal erg, dan weet je helemaal niet zeker of de boodschap goed overkomt
Goed, het zal niet in een half uur klaar zijn, en als er een goed component gratis te krijgen is, meteen doen.Poohbear schreef op 21 augustus 2003 @ 12:32:
[...]
Kortom: ik voorzie alweer allerlei haken en ogen. Mocht topicstarter die niet voorzien, dan mag hij 't van mij best zelf doen, mocht hij ze wel voorzien, dan stel ik voor dat hij een standaard-objectje uitkiest dat alle ongein voor hem afhandeld en waar hij gewoon commando's naar kan sturen.
Maar, als dat niet het geval is, zou ik em zelf schrijven. ( Maar niet in VB
Anywayz, mensen die zeggen "met vb kun je niet op Unix aanloggen ( ? )" lullen dus echt uit hun nek.
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.