home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 2 BBS
/
02-BBS.zip
/
emis14p.zip
/
tauscha.cmd
< prev
next >
Wrap
OS/2 REXX Batch file
|
1995-02-24
|
6KB
|
210 lines
/* TAUSCH.CMD -- wö'94
------------------------------------------------------------------------------
Dieses Script ist Public domain.
Syntax: TAUSCH Maus Nummer "User" "Password"
Fehlercodes: 0 - Alles OK
1 - fehlerhafte Syntax
2 - Modem nicht ansprechbar
3 - Fehler beim Senden des Infiles
4 - Fehler beim Empfangen des Outfiles
10 - Sonstiger Fehler
Änderungen:
(6.1.1995) Carsten Härle, Werner Hunger: Verbesserte Parameterübergabe.
(18.1.1995) Carsten Härle: Sichererer Protokollaufruf und Entfernung von Controllcodes.
(19.1.1995) Carsten Härle: Unterstützung für Porthandle bei externen Protokollen.
(21.1.1995) Carsten Härle: Probleme mit langsamen Modems behoben.
(22.1.1995) Werner Hunger: Vor dem Wählen explizit auflegen.
------------------------------------------------------------------------------
*/
/*
Hier können diverse Anpassungen vorgenommen werden.
Muß bei einem externen Protokoll nicht der Portname sondern
der Porthandle übergeben werden, kann stattdessen der
String "<porthandle>" (case-sensitive) geschrieben werden.
Dieser wird später automatisch ersetzt.
*/
maustimeout = 60
mauspause = 120
portname = 'COM2'
baud = 38400
ftpsend = 'cexyz2 /p<porthandle> /l'baud '/b14400 /sz infile.zip'
ftpreceive = 'cexyz2 /p<porthandle> /l'baud '/b14400 /rz'
/* ftpsend = 'p -device' portname '-speed 14400' '-send infile.zip'
ftpreceive = 'p -device' portname '-speed 14400' '-receive' */
data = 8
parity = 'N'
stop = 1
writelim = 50
readlim = 50
rxtimeout = 1000
flags1 = '00001001'
flags2 = '10100000'
flags3 = '11010010'
errchar = '00'
brkchar = '00'
xonchar = '11'
xoffchar = '13'
enhparms = '00000010'
porthandle = ''
true = 1
false = 0
regular = 2
critical = 3
normallvl = 0
cr = D2C(13)
crlf = cr''D2C(10)
ZmodENQUp = '**' || x2c('18') || 'B01'
ZmodENQDown = '**' || x2c('18') || 'B00'
/* Vorbereitung */
call on error
Call ParseArguments arg(1)
if param.0 \= 4 then do
say 'Fehler: Nur' param.0 'Parameter übergeben'
say 'Syntax: TAUSCH Maus Nummer User Password'
say ''
say 'Also beispielsweise: TAUSCH HD 477275 "Werner Hunger" xyz'
exit 1
end
mausname = param.1
mausnummer = param.2
maususer = param.3
mauspassword = param.4
call rxfuncadd 'rxasyncloadfuncs', 'rxasync', 'rxasyncloadfuncs'
call rxasyncloadfuncs
call rxasyncpriority critical, normallvl
call rxasyncopen portname, 'porthandle'
call rxasyncsetlnctrl porthandle, baud, data, parity, stop
call rxasyncsetdcbinfo porthandle, writelim, readlim, flags1, flags2, flags3, errchar, brkchar, xonchar, xoffchar
call rxasyncsetenhparm porthandle, enhparms
if stream('tausch.log', 'c', 'query exists') > '' then 'del tausch.log'
/* Ersetze "<porthandle>" in den Strings ftpsend und ftpreceive durch den richtigen porthandle */
parse value ftpsend with a '<porthandle>' b
if b \= "" Then ftpsend = a || porthandle || b
parse value ftpreceive with a '<porthandle>' b
if b \= "" Then ftpreceive = a || porthandle || b
/* Modem-Reset */
call sende 'ATZ'||cr
antwort = warteauf('OK')
if antwort = '' then do
say 'Modem nicht ansprechbar! Oder etwa ausgeschaltet?'
exit 2
end
/* schwierig: wählen ;-) */
verbindung = false
do while verbindung == false
call sende cr
call sende 'ATDP'||mausnummer||cr
say 'Wähle '||mausnummer||', Timeout nach '||maustimeout||' Sekunden ...'
call warteauf 'ATDP'
call time 'Reset'
do until (time('Elapsed') > maustimeout) | (verbindung == true)
s = warteauf('')
if pos('CONNECT', s) > 0 then verbindung = true
if pos('NO', s) + pos('OUT OF', s) + pos('DELAY', s) + pos('BUSY', s) > 0 then leave
end
if verbindung == false then do
say 'Warte '||mauspause||' Sekunden ...'
call rxasyncsleep mauspause * 1000
end
end
/* jetzt geht's los ... */
rxtimeout = 1000
/* Original Code */
/* do until pos('Benutzer?', warteauf('Benutzer?')) > 0; end
call sende 'MausTausch'||maususer||cr||mauspassword||cr||'z' */
/* Code für alte Atari-QUARKS */
do until pos('druecken >', warteauf('druecken >')) > 0; end
call sende 'tausch'
do until pos('Username : ', warteauf('Username : ')) > 0; end
call sende maususer||cr
do until pos('Passwort : ', warteauf('Passwort : ')) > 0; end
call sende mauspassword||cr
do until pos(ZmodENQUp, warteauf(ZModENQUp)) > 0 ; end
' 'ftpsend
if rc <> 0 then exit 3
do until pos(ZModENQDown, warteauf(ZModENQDown)) > 0 ; end
' 'ftpreceive
if rc <> 0 then exit 4
call warteauf 'NO CARRIER'
/* Aufräumen */
call rxasyncclose porthandle
call rxasyncpriority regular, normallvl
call rxasyncdropfuncs
call stream 'tausch.log' 'c' 'close'
exit 0
/* interne Funktionen */
sende:
parse arg eingabe
uebrig = ''
rc = rxasyncwrite(porthandle, 0, eingabe, 'uebrig')
if rc <> 0 then say 'Modem nahm 'uebrig' Zeichen nicht an!'
return
warteauf:
parse arg trigger
antwort = ''
do until (code <> 0) | (pos(trigger, antwort) > 0) | (trigger = '')
code = rxasyncread(porthandle, 0, rxtimeout, 'antwort')
call charout , antwort
call charout 'tausch.log', antwort
end
return antwort
ParseArguments:
parse arg line
i = 0
do while line \= ""
parse value line with par rest
if pos('"', par) > 0 then parse value line with '"' par '"' rest
line = rest
i = i + 1
param.i = par
End
param.0 = i
return
/* Für den Fall aller Fälle */
error:
call rxasyncclose porthandle /* Verbindung trennen */
call rxasyncpriority regular, normallvl
call rxasyncdropfuncs
call stream 'tausch.log' 'c' 'close'
exit 10