#Author by Andy#_*_ coding:utf-8 _*_
'''This program is used to create a ftp client'''
importsocket,os,json,time,hashlib,sysclassFtp_client(object):def __init__(self):
self.client=socket.socket()defhelp(self):
msg= '''useage:
ls
pwd
cd dir(example: / .. . /var)
put filename
rm filename
get filename
mkdir directory name'''
print(msg)defconnect(self,addr,port):
self.client.connect((addr,port))defauth(self):
m=hashlib.md5()
username= input("请输入用户名:").strip()
m.update(input("请输入密码:").strip().encode())
password=m.hexdigest()
user_info={'action':'auth','username':username,'password':password}
self.client.send(json.dumps(user_info).encode('utf-8'))
server_response= self.client.recv(1024).decode()#print(server_response)
returnserver_responsedefinteractive(self):whileTrue:
msg= input(">>>:").strip()if notmsg:print("不能发送空内容!")continuecmd=msg.split()[0]ifhasattr(self,cmd):
func=getattr(self,cmd)
func(msg)else:
self.help()continue
def put(self,*args):
cmd_split=args[0].split()if len(cmd_split) > 1:
filename= cmd_split[1]ifos.path.isfile(filename):
filesize=os.stat(filename).st_size
file_info={"action":"put","filename":filename,"size":filesize,"overriding":'True'}
self.client.send( json.dumps(file_info).en