Kermit

Uit DeVliegendeWiki

Ga naar: navigatie, zoeken

Kermit is een communicatiepakket, onder andere geschikt om met modems te babbelen. Het Kent uitstekende script-mogelijkheden, en is daarnaast net als Minicom geschikt voor real-time debuggen.

Zie ook Bob (NL) en Modems

Inhoud

ATQ0V1

Als je het commando dial gebruikt om uit te bellen, geeft Kermit aan het begin van het algorithme het commando ATQ0V1. In februari 2010 had ik een modem die niet goed reageerde op dit commando, waardoor het commando dial onbruikbaar leek te worden.

Volgens de tldp Modem-HowTo dient dit commando om een modem te resetten naar een bepaalde status.

Waarschijnlijk bestaat het commando uit een commando en een parameter:

ATQ0 V1

Het artikel over Hayes codes op Wikipedia zegt het volgende:

Q0: Quiet mode off: Displays result codes, user sees command responses (e.g. OK)
V1: Verbose: English result coded

Dus waarschijnlijk geldt er:

ATQ0V1 = ATQ0 gevolgd door ATV1: Quiet mode off + Verbose

... en daar kan deze modem niet mee overweg. Zo snel ik

set dial display off

geef, doet-ie 't.

Bronnen

columbia.edu/kermit.

Commando's

Kermit kent een aantal commando's op een hoger abstractie-niveau. Oa. aardig voor scripten.

Commando Respons
dial <nummer> Kies een telefoonnummer. Als je de eerder de optie SET DIAL DISPLAY ON hebt gegeven, zie je welke Hayes-commando's schuilgaan achter dit commando (antwoord: atq0v1, atq0v1, atdt<nummer).

Dit commando kan overweg met symbolen zoals * en #. Bv. dial *21*1234567890# wordt prima verwerkt.

De variable dial timeout bepaalt hoe lang dial de lijn openhoudt in afwachting van een reactie van de andere partij. Mocht na iets langer dan dit aantal seconde de tegenpartij niet opnemen, dan genereert dial een DIAL TIMEOUT expired-melding en gaat het script verder. Deze variabele kun je zetten met set dial timeout x met x een waarde in seconde, groter dan 0. Het lijkt erop dat de timeout pas begint te tellen vanaf het moment dat er een verbinding is. In principe zou een timeout van 0 OK zijn.

help set carrier-watch Zo krijg je dus hulp: help voorafgaand aan het commando waar je hulp bij zoekt
help set dial Help voor alle dial-gerelateerde instellingen, inclusief help voor bv set dial display on.
set carrier-watch {auto, on, off} Bepaalt of Kermit controleert op de aanwezigheid van een carrier oftewel Data Carrier Detect (DCD) signal. Bij waarde AUTO moet er altijd een signaal zijn, behalve tijdens dial. Dit lijkt niet hetzelfde te zijn als testen op een deugdelijke kiestoon, zoals voor Bob nodig is
set dial country-code <number> Nvt.
set dial area-code [<number>] Nvt.
set dial confirmation {on, off} Of Kermit bepaalde acties eerst moet bevestigen. Standaardwaarde: off
set dial connect {auto, on, off} Of Kermt na succesvol inbellen automatisch moet CONNECT-en (overschakelen naar terminal modes. Bij de waarde auto gebeurt dit alleen in direct mode, maar niet vanuit een script.
set dial convert-directory {ask, on, off} Nvt.
set dial directory [filename [filename [filename [...]]]] Nvt.
set dial sort {on, off}
set dial display {on, off} Voortgang van het dial-proces weergeven. Standaardwaarde: off
set dial hangup {on, off} Telefoon ophangen voorafgaand aan dial. Standaardwaarden: on
set dial ignore-dialtone on Standaardwaarde: off
set dial macro [name]
set dial method {auto, default, tone, pulse}
set dial pacing <number>
set dial pulse-countries [cc [cc [...]]]
set dial test {on, off}
set dial tone-countries [cc [cc [...]]]
set dial timeout <number>
set dial ... Er zijn nog een handjevol commando's. Gebruik help set dial voor details
set modem type <type> Voorbeeld: set modem type generic. Geeft set modem type ? voor online help. Dit commando wordt door Kermit als eerste remedie aangeraden als je een BLACKLISTED-foutmelding krijgt (zonder succes)
show communications Toont actuele modem-communicatie-gerelateerde instellingen. Handig. Ik geloof dat er drie show-commando's bestaan:
  • show communications
  • show dial
  • show modem
show dial Toont allerlei kies-gerelateerde instellingen. Oa. dial interval en dial timeout.
show modem Toont actuele modem-gerelateerde instellingen, waaronder bv. de string die gebruikt wordt als hangup-command. Wellicht kunnen die instellingen van een andere waarde voorzien worden.

Installatie

Let op de 'c':

sudo apt-get install ckermit

Scripten

Als je een script gebruikt, schakelt Kermit niet automatisch over op connect mode. Je blijft in command mode. Da's handig. Ook handig: Je kunt variabelen gebruiken in scripts.

Bronnen:

Voorbeeld: Bob

Bob (NL) gebruikt het volgende script:

#!/usr/bin/kermit +

set line /dev/ttyS0
set carrier-watch off
set dial display on
set dial timeout 1

output at*ncd

dial *21*\%1#

dial 0201234567890
 
exit

De eerste regel:

#!/usr/bin/kermit +

Dit is de kerbang, broertje van de shebang. Het geeft de interpreter aan dat dit een Kermit-script is. Volgens mij geeft het '+'-teken aan dat er argumenten kunnen komen.

De tweede regel:

set line /dev/ttyS0

defineert op welk device de lijn zich bevindt.

Een paar keer kreeg ik de foutmelding:

Sorry, write access to UUCP lockfile directory denied.

waarbij bleek dat ik een niet-bestaand device probeerde te gebruiken. Met dank aan http://fixunix.com/protocols/61433-sorry-write-access-uucp-lockfile-directory-denied.html.

De derde regel:

set carrier-watch off

is bedoeld zodat Kermit niet gaat controleren op aanwezigheid van een carrier oftewel data carrier detect signal

De vierde regel:

set dial display on

specificeert dat er

Voorbeeld: Simpel uitbellen

#!/usr/bin/kermit +

set line /dev/ttyS1
set carrier-watch off
set dial timeout 1

dial 0612345678

exit

Dit script is handig bij debuggen. Ik heb het in februari 2010 een paar keer achter elkaar gestart met een gewone kiestoon, en het werkte prima.

Voorbeeld: tldp.org's Modem-HowTo

De tlpd Modem-HowTo heeft in hoofdstuk 11.4 het volgende voorbeeld:

linux# kermit
C-Kermit 6.0.192, 6 Sep 96, for Linux
 Copyright (C) 1985, 1996,
  Trustees of Columbia University in the City of New York.
Default file-transfer mode is BINARY
Type ? or HELP for help.
C-Kermit>set line /dev/ttyS4
C-Kermit>set carrier-watch off
C-Kermit>set speed 115200
/dev/ttyS4, 115200 bps
C-Kermit>c
Connecting to /dev/ttyS4, speed 115200.
The escape character is Ctrl-\ (ASCII 28, FS)
Type the escape character followed by C to get back,
or followed by ? to see other options.
ATE1Q0V1                           ; you type this and then the Enter key
OK                                 ; modem should respond with this

Hoe Kermit werk: Zo snel je commando 'c' hebt gegeven, zit je in een interactieve modus.

Persoonlijke instellingen