home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2004 July
/
CMCD0704.ISO
/
Software
/
Shareware
/
Comunicatii
/
jyte
/
jyte.exe
/
rasutil.py
< prev
next >
Wrap
Text File
|
2000-10-16
|
3KB
|
89 lines
# A demo of using the RAS API from Python
import sys
import string
import win32ras
# The error raised if we can not
class ConnectionError(Exception):
pass
def Connect(rasEntryName, numRetries = 5):
"""Make a connection to the specified RAS entry.
Returns a tuple of (bool, handle) on success.
- bool is 1 if a new connection was established, or 0 is a connection already existed.
- handle is a RAS HANDLE that can be passed to Disconnect() to end the connection.
Raises a ConnectionError if the connection could not be established.
"""
assert numRetries > 0
for info in win32ras.EnumConnections():
if string.lower(info[1])==string.lower(rasEntryName):
print "Already connected to", rasEntryName
return 0, info[0]
dial_params, have_pw = win32ras.GetEntryDialParams(None, rasEntryName)
if not have_pw:
print "Error: The password is not saved for this connection"
print "Please connect manually selecting the 'save password' option and try again"
sys.exit(1)
print "Connecting to", rasEntryName, "..."
retryCount = numRetries
while retryCount > 0:
rasHandle, errCode = win32ras.Dial(None, None, dial_params, None)
if win32ras.IsHandleValid(rasHandle):
bValid = 1
break
print "Retrying..."
win32api.Sleep(5000)
retryCount = retryCount - 1
if errCode:
raise ConnectionError(errCode, win32ras.GetErrorString(errCode))
return 1, rasHandle
def Disconnect(handle):
if type(handle)==type(''): # have they passed a connection name?
for info in win32ras.EnumConnections():
if string.lower(info[1])==string.lower(handle):
handle = info[0]
break
else:
raise ConnectionError(0, "Not connected to entry '%s'" % handle)
win32ras.HangUp(handle)
usage="""rasutil.py - Utilities for using RAS
Usage:
rasutil [-r retryCount] [-c rasname] [-d rasname]
-r retryCount - Number of times to retry the RAS connection
-c rasname - Connect to the phonebook entry specified by rasname
-d rasname - Disconnect from the phonebook entry specified by rasname
"""
def Usage(why):
print why
print usage
sys.exit(1)
if __name__=='__main__':
import getopt
try:
opts, args = getopt.getopt(sys.argv[1:], "r:c:d:")
except getopt.error, why:
Usage(why)
retries = 5
if len(args) <> 0:
Usage("Invalid argument")
for opt, val in opts:
if opt=='-c':
Connect(val, retries)
if opt=='-d':
Disconnect(val)
if opt=='-r':
retries = int(val)