|
| mange komandoer over telnet... Fra : Søren |
Dato : 09-10-03 20:04 |
|
Hejsa
Jeg skal udføre en masse komandoer over telnet. Hvordan gør jeg det nemmest?
Kan man få telnet til at udføre komandoer opskrevet i en (lokal) fil,
eller er der en anden måde?
Altså, det jeg gerne vil have automatiseret er:
>telnet maskine
komando1
komando2
..
..
..
komando 300
quit
Nogle hints eller henvisninger til godt læsestof? Har kigget lidt løst
på man telnet og på google, men har ikke lige kunne finde det jeg har
brug for.
På forhånd tak
--
Søren
| |
Klaus Ellegaard (09-10-2003)
| Kommentar Fra : Klaus Ellegaard |
Dato : 09-10-03 20:11 |
|
=?ISO-8859-1?Q?S=F8ren?= <nogen@microsoft.com> writes:
>Jeg skal udføre en masse komandoer over telnet. Hvordan gør jeg det nemmest?
Først og fremmest bør du sikre selve kørslen bedre. Hvad sker
der, hvis forbindelsen afbrydes undervejs? Hvis der kræves en
særlig rækkefølge og afhængigheder mellem kommandoerne, hvordan
ved du så, hvor du skal starte igen efter afbrydelsen?
Der skal lidt flere detaljer på banen, før man kan svare helt
konkret på spørgsmålet.
Men er det noget, der skal ske en gang i timen/dagen/ugen/...,
kunne en løsning være at smide en batchfil op på maskinen i den
anden ende og lade den køre via cron. Forudsat at der inden for
den pågældende time er kommet noget data, naturligvis.
Denne metode kræver en måde at sikre, at alle data er kommet
frem, så cronjobbet ikke kører den første trediedel af batchen,
alt imens den sidste 2/3 er ved at blive overført. Det kræver
også, at cronjobbet fjerner den pågældende fil igen, og at der
ikke kommer to filer inden for samme time. Hvilket så igen
afføder et spørgsmål om, hvad der sker, hvis cron crasher på
fjernmaskinen.
Det er ikke sikkert, at ovenstående er en god løsning. Hvis du
f.eks. skal bruge outputtet af kommandoerne på den første
maskine, er det måske ikke et heldigt setup.
Men uden flere oplysninger er det svært at komme med gode ideer.
>Kan man få telnet til at udføre komandoer opskrevet i en (lokal) fil,
>eller er der en anden måde?
Hvis du vil have det gjort på den måde, er netcat et udmærket
værktøj. Det har sine begrænsninger, så måske expect kan bruges
til at gøre tingene mere avancerede.
Mvh.
Klaus.
| |
Søren (09-10-2003)
| Kommentar Fra : Søren |
Dato : 09-10-03 21:24 |
|
Klaus Ellegaard wrote:
> =?ISO-8859-1?Q?S=F8ren?= <nogen@microsoft.com> writes:
>
>
>>Jeg skal udføre en masse komandoer over telnet. Hvordan gør jeg det nemmest?
snip "En masse fornuftige overvejelser"
Det er slet ikke så meget der skal gøres ud af det...
>>Kan man få telnet til at udføre komandoer opskrevet i en (lokal) fil,
>>eller er der en anden måde?
>
>
> Hvis du vil have det gjort på den måde, er netcat et udmærket
> værktøj. Det har sine begrænsninger, så måske expect kan bruges
> til at gøre tingene mere avancerede.
Kan godt være at disse programmer kan klare det jeg vil, men det er
meget før kæden hopper af for mig...
Tror mit spørgsmål egentligt er:
Hvordan får jeg sendt en komando til et allerede kørende program. Eller,
hvordan får jeg automatiseret komandoer til et program der normalt tager
input fra tastaturet.
Det er måske elementær bash scripting, men det jeg mangler er syntaksen til:
telnet maskine "mit input til telnet her, med mulighed for at lave nogle
løkker"
Ellers tak for svaret Klaus, men det var nok ikke det helt rigtige
spørgsmål jeg havde stillet.
| |
Kent Friis (09-10-2003)
| Kommentar Fra : Kent Friis |
Dato : 09-10-03 21:32 |
|
Den Thu, 09 Oct 2003 22:24:28 +0200 skrev Søren:
>Klaus Ellegaard wrote:
>> =?ISO-8859-1?Q?S=F8ren?= <nogen@microsoft.com> writes:
>>
>>
>>>Jeg skal udføre en masse komandoer over telnet. Hvordan gør jeg det nemmest?
>
>snip "En masse fornuftige overvejelser"
>
>Det er slet ikke så meget der skal gøres ud af det...
>
>>>Kan man få telnet til at udføre komandoer opskrevet i en (lokal) fil,
>>>eller er der en anden måde?
>>
>>
>> Hvis du vil have det gjort på den måde, er netcat et udmærket
>> værktøj. Det har sine begrænsninger, så måske expect kan bruges
>> til at gøre tingene mere avancerede.
>
>Kan godt være at disse programmer kan klare det jeg vil, men det er
>meget før kæden hopper af for mig...
>
>Tror mit spørgsmål egentligt er:
>Hvordan får jeg sendt en komando til et allerede kørende program. Eller,
>hvordan får jeg automatiseret komandoer til et program der normalt tager
>input fra tastaturet.
expect.
Mvh
Kent
--
The frozen north will hatch a flightless bird,
who will spread his wings and dominate the earth
And cause an empire by the sea to fall
To the astonishment, and delight of all.
| |
Klaus Ellegaard (09-10-2003)
| Kommentar Fra : Klaus Ellegaard |
Dato : 09-10-03 21:52 |
|
=?ISO-8859-1?Q?S=F8ren?= <nogen@microsoft.com> writes:
>telnet maskine "mit input til telnet her, med mulighed for at lave nogle
>løkker"
"expect" er din ven her. Det er ikke simpelt, og man er nødt til
at øve sig en del. Men sådan er netværkskommunikation nu engang.
At sende en mail kunne man f.eks. gøre således:
| #!/opt/sfw/bin/expect
|
| spawn telnet
|
| expect "telnet>" {
| send "open mail.server.blah.blah 25\r"
| }
|
| expect "220 " {
| send "MAIL FROM:<min@mail.adresse>\r"
| }
|
| expect "Sender ok" {
| send "RCPT TO:<din@mail.adresse>\r"
| }
|
| expect "Recipient ok" {
| send "DATA\r"
| }
|
| expect "354" {
| send "From: <mig>\rTo: <dig>\rSubject: Hallo\r\rDavs\r.\r"
| }
|
| expect "Message accepted for delivery" {
| send "QUIT\r"
| }
expect supporter også if-then-sætninger, løkker og mange andre
sjove ting. Man kan sågar også spørge brugeren om noget undervejs.
"man expect" fortæller det hele.
....og husk så at indbygge noget fejldetektion og -korrektion i
scriptene. I ovenstående eksempel aner man ikke, om mailen blev
sendt.
Værre endnu: hvem siger, at mailserveren siger "Message accepted
for delivery"? Den kunne jo også sige "Message received". Hvis
den gør det, hænger mit script til dommedag og venter på den
rigtige sætning.
Humlen er naturligvis at vente på noget, man er sikker på, vil
ske. I ovenstående tilfælde skal man i henhold til standarden vente
på statuskoderne i starten af linjen. Så min implementering er
altså ret dårlig, men den illustrerer princippet.
Mvh.
Klaus.
| |
Søren (09-10-2003)
| Kommentar Fra : Søren |
Dato : 09-10-03 23:03 |
|
Klaus Ellegaard wrote:
> =?ISO-8859-1?Q?S=F8ren?= <nogen@microsoft.com> writes:
>
>
>>telnet maskine "mit input til telnet her, med mulighed for at lave nogle
>>løkker"
>
>
> "expect" er din ven her. Det er ikke simpelt, og man er nødt til
> at øve sig en del. Men sådan er netværkskommunikation nu engang.
Nu kom jeg (efter lidt mere googling) igennem med
(komando1;komando2;løkke...)|telnet maksine
Men jeg kan godt se styrken i expect nu. Kan være jeg går i gang med den
når/hvis jeg skal have udbygget det...
Mange tak for hjælpen.
> Mvh.
> Klaus.
| |
Klaus Ellegaard (09-10-2003)
| Kommentar Fra : Klaus Ellegaard |
Dato : 09-10-03 23:20 |
|
=?ISO-8859-1?Q?S=F8ren?= <nogen@microsoft.com> writes:
>Nu kom jeg (efter lidt mere googling) igennem med
>(komando1;komando2;løkke...)|telnet maksine
Det virker, hvis du altid er 100% sikker på, at maskinen er
tilgængelig, og at der aldrig kan ske fejl.
Mvh.
Klaus.
| |
|
|