mirror of
https://github.com/python/cpython.git
synced 2024-11-24 10:24:35 +08:00
a8d30d5d66
closes bug #111928
59 lines
1.1 KiB
Python
Executable File
59 lines
1.1 KiB
Python
Executable File
#! /usr/bin/env 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()
|