#使用socket(類似telnet) import sys,string from socket import * def parse_host_port(source_line): port_begin=source_line.find("(")+1 port_end=source_line.find(")") host_port=string.split(source_line[port_begin:port_end],",") pasv_host=host_port[0]+"."+host_port[1]+"."+host_port[2]+"."+host_port[3] pasv_port=string.atoi(host_port[4])*256+string.atoi(host_port[5]) return pasv_host,pasv_port s1=socket(AF_INET,SOCK_STREAM) s2=socket(AF_INET,SOCK_STREAM) #連線傳真伺服器 s1.connect(("192.168.0.50",4559)) #讀取我們要像檔案一般 #寫入使用一般網路的send #因此要使用makefile() #讀取結果s1_f.readline() #寫入要求s1.send("資料\n") s1_f=s1.makefile("rw") line=s1_f.readline() print line s1.send("user csc\n") line=s1_f.readline() print line #RECVQ(查詢收到的傳真) print "RECVQ" s1.send("pasv\n") port=s1_f.readline() pasv_host,pasv_port=parse_host_port(port) s2.connect((pasv_host,pasv_port)) s2_f=s2.makefile("rw") s1.send("list recvq\n") line=s1_f.readline() print line line=s2_f.readline() while line: print line line=s2_f.readline() #查詢命令結束後在主動視窗會傳回成功或失敗的狀況 line=s1_f.readline() print line s2.close() s2_f.close() #SENDQ(查詢送出去的傳真) s2=socket(AF_INET,SOCK_STREAM) print "SENDQ" s1.send("pasv\n") port=s1_f.readline() print port pasv_host,pasv_port=parse_host_port(port) s2.connect((pasv_host,pasv_port)) s2_f=s2.makefile("rw") s1.send("list sendq\n") line=s1_f.readline() print line line=s2_f.readline() while line: print line line=s2_f.readline() line=s1_f.readline() print line s2.close() s2_f.close() #DONEQ(查詢剛傳送完畢) print "DONEQ" s2=socket(AF_INET,SOCK_STREAM) s1.send("pasv\n") port=s1_f.readline() pasv_host,pasv_port=parse_host_port(port) s2.connect((pasv_host,pasv_port)) s2_f=s2.makefile("rw") s1.send("list doneq\n") line=s1_f.readline() print line line=s2_f.readline() while line: print line+"\t" line=s2_f.readline() line=s1_f.readline() print line s2.close() s2_f.close() s1.send("quit\n") s1_f.close() s1.close() #====================================================== #使用ftp import ftplib ftp=ftplib.FTP() ftp.connect(host="192.168.0.50",port=4559) ftp.login(user="test") #查詢收(/recvq) ftp.dir('/recvq') #查詢送(/sendq) ftp.dir('/sendq') #查詢剛做完(/doneq) ftp.dir('/doneq')