Skip to content

Instantly share code, notes, and snippets.

@vext01
Created August 17, 2012 00:07
Show Gist options
  • Save vext01/3374698 to your computer and use it in GitHub Desktop.
Save vext01/3374698 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
import sys
import getopt
import subprocess
import os
import os.path
settings = {
"dsided" : False,
"printer" : "bookman",
"host" : "myrtle",
"rdir" : "/home/cug/eb771/print/"
}
def usage():
sys.stderr.write("Usage: rlp [args] file1 file2 ...\n")
sys.stderr.write(" -2 \t\tSelect double sided mode\n")
sys.stderr.write(" -d ptr\tSelect printer\n")
sys.stderr.write(" -h\t\tShow this help\n")
sys.stderr.flush()
try:
opts, args = getopt.getopt(sys.argv[1:], "2d:h", ["double-sided", "help", "printer="])
except getopt.GetoptError, err:
sys.stderr.write(str(err) + "\n")
sys.stderr.flush()
usage()
sys.exit(1)
for o, v in opts:
if (o == "-2"):
settings["dsided"] = True
elif (o == "-d"):
settings["printer"] = v
elif (o == "-h"):
usage()
exit(0)
else:
sys.stderr.write("getopt failure\n")
sys.stderr.flush()
sys.exit(1)
if len(args) == 0:
sys.stderr.write("No file argument\n");
sys.stderr.flush()
sys.exit(1)
for f in args:
converted = False
pipe = subprocess.Popen("file %s" % f, shell=True, bufsize=256, stdout=subprocess.PIPE).stdout
magic = pipe.readline()
pipe.close()
if ("PDF document" in magic):
print("Converting PDF to PostScript...")
# note pdf2ps sucks and pdftops works
os.system("pdftops %s %s.ps" % (f, f))
f = "%s.ps" % f
elif ("PostScript" not in magic):
sys.stderr.write("error: %s is not postscript\n" % f)
sys.stderr.write(" : %s" % magic)
sys.stderr.write(" : skipping this file\n")
sys.stderr.flush()
continue
base = os.path.basename(f)
os.system("scp %s %s:%s" % (f, settings["host"], settings["rdir"]))
if (settings["dsided"]):
cmd = "ssh %s \"psdouble %s%s | lp -d%s\"" % (settings["host"], settings["rdir"], base, settings["printer"])
else:
cmd = "ssh %s lp -d%s %s%s" % (settings["host"], settings["printer"], settings["rdir"], base)
print(cmd)
os.system(cmd)
if (converted):
os.unlink(f)
os.system("ssh %s rm %s%s" % (settings["host"], settings["rdir"], base))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment