| #! /usr/bin/env python3 |
| |
| # Python interface to the Internet finger daemon. |
| # |
| # Usage: finger [options] [user][@host] ... |
| # |
| # If no host is given, the finger daemon on the local host is contacted. |
| # Options are passed uninterpreted to the finger daemon! |
| |
| |
| import sys, string |
| from socket import * |
| |
| |
| # Hardcode the number of the finger port here. |
| # It's not likely to change soon... |
| # |
| FINGER_PORT = 79 |
| |
| |
| # Function to do one remote finger invocation. |
| # Output goes directly to stdout (although this can be changed). |
| # |
| def finger(host, args): |
| s = socket(AF_INET, SOCK_STREAM) |
| s.connect((host, FINGER_PORT)) |
| s.send(args + '\n') |
| while 1: |
| buf = s.recv(1024) |
| if not buf: break |
| sys.stdout.write(buf) |
| sys.stdout.flush() |
| |
| |
| # Main function: argument parsing. |
| # |
| def main(): |
| options = '' |
| i = 1 |
| while i < len(sys.argv) and sys.argv[i][:1] == '-': |
| options = options + sys.argv[i] + ' ' |
| i = i+1 |
| args = sys.argv[i:] |
| if not args: |
| args = [''] |
| for arg in args: |
| if '@' in arg: |
| at = string.index(arg, '@') |
| host = arg[at+1:] |
| arg = arg[:at] |
| else: |
| host = '' |
| finger(host, options + arg) |
| |
| |
| # Call the main function. |
| # |
| main() |