# Remote nusers client interface import rpc from rpc import Packer, Unpacker, UDPClient, BroadcastUDPClient class RnusersPacker(Packer): def pack_utmp(self, ui): ut_line, ut_name, ut_host, ut_time = utmp self.pack_string(ut_line) self.pack_string(ut_name) self.pack_string(ut_host) self.pack_int(ut_time) def pack_utmpidle(self, ui): ui_itmp, ui_idle = ui self.pack_utmp(ui_utmp) self.pack_uint(ui_idle) def pack_utmpidlearr(self, list): self.pack_array(list, self.pack_itmpidle) class RnusersUnpacker(Unpacker): def unpack_utmp(self): ut_line = self.unpack_string() ut_name = self.unpack_string() ut_host = self.unpack_string() ut_time = self.unpack_int() return ut_line, ut_name, ut_host, ut_time def unpack_utmpidle(self): ui_utmp = self.unpack_utmp() ui_idle = self.unpack_uint() return ui_utmp, ui_idle def unpack_utmpidlearr(self): return self.unpack_array(self.unpack_utmpidle) class PartialRnusersClient: def addpackers(self): self.packer = RnusersPacker() self.unpacker = RnusersUnpacker('') def Num(self): return self.make_call(1, None, None, self.unpacker.unpack_int) def Names(self): return self.make_call(2, None, \ None, self.unpacker.unpack_utmpidlearr) def Allnames(self): return self.make_call(3, None, \ None, self.unpacker.unpack_utmpidlearr) class RnusersClient(PartialRnusersClient, UDPClient): def __init__(self, host): UDPClient.__init__(self, host, 100002, 2) class BroadcastRnusersClient(PartialRnusersClient, BroadcastUDPClient): def __init__(self, bcastaddr): BroadcastUDPClient.__init__(self, bcastaddr, 100002, 2) def test(): import sys if not sys.argv[1:]: testbcast() return else: host = sys.argv[1] c = RnusersClient(host) list = c.Names() for (line, name, host, time), idle in list: line = strip0(line) name = strip0(name) host = strip0(host) print "%r %r %r %s %s" % (name, host, line, time, idle) def testbcast(): c = BroadcastRnusersClient('<broadcast>') def listit(list, fromaddr): host, port = fromaddr print host + '\t:', for (line, name, host, time), idle in list: print strip0(name), print c.set_reply_handler(listit) all = c.Names() print 'Total Count:', len(all) def strip0(s): while s and s[-1] == '\0': s = s[:-1] return s test()
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
.T.pyo.40009 | File | 952 B | 0644 |
|
.mountclient.pyo.40009 | File | 5.58 KB | 0644 |
|
.nfsclient.pyo.40009 | File | 6.74 KB | 0644 |
|
.rnusersclient.pyo.40009 | File | 5.01 KB | 0644 |
|
.rpc.pyo.40009 | File | 29.72 KB | 0644 |
|
.xdr.pyo.40009 | File | 7.71 KB | 0644 |
|
MANIFEST | File | 361 B | 0644 |
|
README | File | 1.23 KB | 0644 |
|
T.py | File | 575 B | 0644 |
|
T.pyc | File | 952 B | 0644 |
|
T.pyo | File | 952 B | 0644 |
|
mountclient.py | File | 6.48 KB | 0644 |
|
mountclient.pyc | File | 5.58 KB | 0644 |
|
mountclient.pyo | File | 5.58 KB | 0644 |
|
nfsclient.py | File | 5.2 KB | 0644 |
|
nfsclient.pyc | File | 6.74 KB | 0644 |
|
nfsclient.pyo | File | 6.74 KB | 0644 |
|
rnusersclient.py | File | 2.57 KB | 0644 |
|
rnusersclient.pyc | File | 5.01 KB | 0644 |
|
rnusersclient.pyo | File | 5.01 KB | 0644 |
|
rpc.py | File | 26.98 KB | 0644 |
|
rpc.pyc | File | 29.72 KB | 0644 |
|
rpc.pyo | File | 29.72 KB | 0644 |
|
test | File | 697 B | 0755 |
|
xdr.py | File | 4.93 KB | 0644 |
|
xdr.pyc | File | 7.71 KB | 0644 |
|
xdr.pyo | File | 7.71 KB | 0644 |
|