Home | History | Annotate | Download | only in sockets
      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()
     59