3 Upload a file to Smoothie over the network
6 from __future__
import print_function
11 # Define command line argument interface
12 parser
= argparse
.ArgumentParser(description
='Upload a file to Smoothie over network.')
13 parser
.add_argument('file', type=argparse
.FileType('r'),
14 help='filename to be uploaded')
15 parser
.add_argument('ipaddr',
16 help='Smoothie IP address')
17 parser
.add_argument('-v','--verbose',action
='store_true',
18 help='Show data being uploaded')
19 parser
.add_argument('-o','--output',
20 help='Set output filename')
21 parser
.add_argument('-q','--quiet',action
='store_true',
22 help='suppress all output to terminal')
24 args
= parser
.parse_args()
27 verbose
= args
.verbose
30 output
= args
.file.name
32 filesize
= os
.path
.getsize(args
.file.name
)
34 if not args
.quiet
: print("Uploading " + args
.file.name
+ " to " + args
.ipaddr
+ " as " + output
+ " size: " + str(filesize
) )
36 # make connection to sftp server
37 s
= socket
.socket(socket
.AF_INET
, socket
.SOCK_STREAM
)
39 s
.connect((args
.ipaddr
, 115))
44 if not ln
.startswith("+") :
45 print("Failed to connect with sftp: " + ln
)
48 if verbose
: print("RSP: " + ln
.strip())
50 # Issue initial store command
51 tn
.write("STOR OLD /sd/" + output
+ "\n")
55 if not ln
.startswith("+") :
56 print("Failed to create file: " + ln
)
59 if verbose
: print("RSP: " + ln
.strip())
62 tn
.write("SIZE " + str(filesize
) + "\n")
66 if not ln
.startswith("+") :
67 print("Failed: " + ln
)
70 if verbose
: print("RSP: " + ln
.strip())
77 print("SND: " + line
.strip())
80 print(str(cnt
) + "/" + str(filesize
) + "\r", end
='')
86 if not ln
.startswith("+") :
87 print("Failed to save file: " + ln
)
90 if verbose
: print("RSP: " + ln
.strip())
99 if not args
.quiet
: print("Upload complete")