/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
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.

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste