fingeropener (1245B)
1 #!/usr/bin/env python3 2 # coding=utf-8 3 # 4 # Copy me if you can. 5 # by 20h 6 # 7 8 import os 9 import sys 10 import getopt 11 import urllib.parse 12 from subprocess import Popen 13 14 def usage(app): 15 app = os.path.basename(app) 16 sys.stderr.write("usage: %s [-h] URI\n" % (app)) 17 sys.exit(1) 18 19 def runcmd(cmd, arg=None): 20 fd = open("/dev/null") 21 if os.fork() == 0: 22 if arg != None: 23 cmd = cmd % (arg) 24 p = Popen(cmd, shell=True, stdout=fd, stderr=fd) 25 p.wait() 26 27 def main(args): 28 try: 29 opts, largs = getopt.getopt(args[1:], "h") 30 except getopt.GetoptError as err: 31 print(str(err)) 32 usage(args[0]) 33 34 for o, a in opts: 35 if o == "-h": 36 usage(args[0]) 37 else: 38 assert False, "unhandled option" 39 40 if len(largs) < 1: 41 usage(args[0]) 42 uri = " ".join(largs) 43 44 puri = urllib.parse.urlparse(uri) 45 46 host = puri.hostname 47 user = puri.username 48 if host != None and user != None: 49 req = "%s@%s" % (user, host) 50 elif host == None and user != None: 51 req = "%s" % (user) 52 elif host == None and user == None: 53 req = "" 54 else: 55 sys.stderr.write("Invalid URI.\n") 56 return 1 57 58 if req == "": 59 runcmd("$XTERM -e sh -c \"finger -l; read;\"") 60 else: 61 runcmd("$XTERM -e sh -c \"finger -l '%s'; read;\"", req) 62 63 return 0 64 65 if __name__ == "__main__": 66 sys.exit(main(sys.argv)) 67