python 22 FTP之驗證功能

2021-09-11 13:54:16 字數 3964 閱讀 9063

目錄結構

ftp_server/bin/ftp_server.py

import os,sys

path=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# print(path)

# print(sys.path)

# print(os.path.dirname(os.path.abspath(__file__)))

# print(os.path.abspath(__file__))

from core import main

if __name__ == '__main__':

main.ar**handler()

複製**

ftp_server/conf/settings.py

ip='127.0.0.1'

port=8080

複製**

ftp_server/core/main.py

#解析命令列的命令

import optparse

import socketserver

from conf import settings

#這個檔案不是啟動檔案

from core import server

class ar**handler():

def __init__(self):

self.op=optparse.optionparser()

# self.op.add_option('-s','--server',dest='server')

# self.op.add_option('-p','--port',dest='port')

options,args=self.op.parse_args()

self.verify_args(options,args)

# print(options,args)

# print(options.server)#ip位址

# print(options.port)#埠

def verify_args(self,options,args):

cmd=args[0]

if hasattr(self,cmd):

func =getattr(self,cmd)

func()

def start(self):

print('the server is working....')

s = socketserver.threadingtcpserver((settings.ip,settings.port),server.serverhandle)

s.serve_forever()

def help(self):

pass

```***ftp_server/core/server.py***

```import socketserver

import json

class serverhandle(socketserver.baserequesthandler):

def handle(self):

while 1 :

data = self.request.recv(1024).strip()

data = json.loads(data.decode('utf8'))

if data.get('action'):

if hasattr(self,data.get('action')):

func = getattr(self,data.get('action'))

func(**data)

else:

print('error')

else:

print('error')

def auth(self,**data):

print('data:',data)

def put(self,**data):

pass

複製**

ftp_client/ftp_client.py

import optparse

import socket

import json

import configparser

class clienthandler():

def __init__(self):

self.op = optparse.optionparser()

self.op.add_option('-s','--server',dest='server')

self.op.add_option('-p','--p',dest='port')

self.op.add_option('-u', '--username', dest='username')

self.op.add_option('-p', '--password', dest='password')

self.options,self.args = self.op.parse_args()

#對埠和ip位址進行安全校驗

self.verify_args(self.options,self.args)

#連線服務端

self.make_connection()

def verify_args(self,options,args):

server = options.server

port=options.port

# username=options.username

# password=options.password

if int(port)>0 and int(port)<65535:

return true

else:

exit('the port is in 0-65535')

def make_connection(self):

self.sock=socket.socket()

self.sock.connect((self.options.server,int(self.options.port)))

#和服務端進行互動

def interactive(self):

self.authenticate()

def authenticate(self):

if self.options.username is none or self.options.password is none:

username = input('username:')

password = input('password:')

return self.getauth_result(username,password)

return self.getauth_result(self.options.username,self.options.password)

def respones(self):

data = self.sock.recv(1024).decode('utf8')

data = json.loads(data)

return data

def getauth_result(self,user,pwd):

data =

self.sock.send(json.dumps(data).encode('utf8'))

response=self.respones()

print(response)

ch = clienthandler()

#互動ch.interactive()

複製**

執行結果

python之unittest驗證函式功能

一 待驗證指令碼 首先,有如下三個指令碼,分別對應三個函式 分別匯入模組行,如下 1 from fuction1 import fu12 from fuction2 import fu23 from fuction3 import fu3 執行指令碼檢視結果 1 x fu1 10 2print x ...

python生成驗證碼 python之驗證碼生成

今天向大家總結一下python在做專案時用到的驗證碼生成工具 code與captcha code 全稱 graphic verification code 安裝 pip install code 使用 import code s,v code.generate 序列解包 s.show 顯示生成的驗證...

Python入門之print 函式的部分功能

1 在控制台輸出數字 print 數字 其中數字可以是任意型別,包括int,float 例 print 520 2 在控制台輸出字串 print 字串 print 字串 與輸出數字所不同的是,在控制台輸出字串,需要在print 函式裡面加入一對單引號 或者一對雙引號 在引號中間加入想要輸出的字串內容...