fingeropener - plumber - Plumber – a modern approach to plumbing
(HTM) git clone git://r-36.net/plumber
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
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