59 lines
1.1 KiB
Python
59 lines
1.1 KiB
Python
|
#! /usr/local/python
|
||
|
|
||
|
# 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()
|