]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/python/Demo/sockets/finger.py
/sys/lib/dist/mkfile: test for .git directory
[plan9front.git] / sys / src / cmd / python / Demo / sockets / finger.py
1 #! /usr/bin/env python
2
3 # Python interface to the Internet finger daemon.
4 #
5 # Usage: finger [options] [user][@host] ...
6 #
7 # If no host is given, the finger daemon on the local host is contacted.
8 # Options are passed uninterpreted to the finger daemon!
9
10
11 import sys, string
12 from socket import *
13
14
15 # Hardcode the number of the finger port here.
16 # It's not likely to change soon...
17 #
18 FINGER_PORT = 79
19
20
21 # Function to do one remote finger invocation.
22 # Output goes directly to stdout (although this can be changed).
23 #
24 def finger(host, args):
25     s = socket(AF_INET, SOCK_STREAM)
26     s.connect((host, FINGER_PORT))
27     s.send(args + '\n')
28     while 1:
29         buf = s.recv(1024)
30         if not buf: break
31         sys.stdout.write(buf)
32     sys.stdout.flush()
33
34
35 # Main function: argument parsing.
36 #
37 def main():
38     options = ''
39     i = 1
40     while i < len(sys.argv) and sys.argv[i][:1] == '-':
41         options = options + sys.argv[i] + ' '
42         i = i+1
43     args = sys.argv[i:]
44     if not args:
45         args = ['']
46     for arg in args:
47         if '@' in arg:
48             at = string.index(arg, '@')
49             host = arg[at+1:]
50             arg = arg[:at]
51         else:
52             host = ''
53         finger(host, options + arg)
54
55
56 # Call the main function.
57 #
58 main()