py学习之FTP

1.FTP之参数解析与命令分发

a) 层级目录如下

b) 配置文件如下

#!/usr/bin/env python 
# -*- coding:utf8 -*-

import socket
sk=socket.socket()
sk.connect(('127.0.0.1',8080))#括号里是元组
#!/usr/bin/env python 
# -*- coding:utf8 -*-
import os,sys
PATH=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(PATH)
# print(os.path.dirname(__file__)) #打印文件所在当前目录
# print(os.path.abspath(__file__))#定位到文件绝对路径
from core import main


if __name__ == '__main__':
    main.ArgvHandler()
#!/usr/bin/env python 
# -*- coding:utf8 -*-

IP='127.0.0.1'

PORT=8080
#!/usr/bin/env python 
# -*- coding:utf8 -*-

import optparse   #解析命令行的命令
import socketserver

from conf import settings

from core import server  #必须这样导入,因为path路径找不到



class ArgvHandler():
    def __init__(self): #初始方法
        self.op=optparse.OptionParser()
        # self.op.add_option("-s","--s",dest="server")   # -s 自己起的,--s 固定参数
        # self.op.add_option("-P","--port",dest="port")

        options,args=self.op.parse_args()  #参数解析,返回两个结果,option是绑定参数,
                                           # args返回没绑定的参数列表
        self.verify_args(options,args)

    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 on port 8080......')
        s=socketserver.ThreadingTCPServer((settings.IP,settings.PORT),server.Serverhandler)
        s.serve_forever()

    def help(self):
        pass







        print(type(options))
        print(options.server)
        print(options.port)
        print(args[1])
#!/usr/bin/env python 
# -*- coding:utf8 -*-
import socketserver



class Serverhandler(socketserver.BaseRequestHandler):

    def handle(self):
        print('ok------yu')

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

服务器未能识别 HTTP 标头 SOAPAction 的值

SOAPAction HTTP request header被用来标识SOAP HTTP请求的目的地,其值是个URI地址。SOAP发送并不限制格式、URI特征或...

32060
来自专栏潇涧技术专栏

One Trip of building a Crawler

最近需要从网上抓取大量的数据,于是体验了一下爬虫程序的开发和部署,主要是学会了一些实用工具的操作。

14720
来自专栏安恒信息

安全通告 | S2-053远程代码执行漏洞

安全通告 S2-053远程代码执行漏洞 1. 漏洞描述 (S2-053/CVE-2017-12611) Struts2 REST插件存在远程代码执行漏洞,开发...

31660
来自专栏程序员互动联盟

【专业技术】8大你不得不知的Android调试工具

1. 查看当前堆栈 1) 功能:在程序中加入代码,使可以在logcat中看到打印出的当前函数调用关系 2) 方法: new Exception(“print ...

691130
来自专栏Python

linux每日命令(27):chmod命令

chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含...

11210
来自专栏乐沙弥的世界

Linux 常用目录管理命令(cd pwd mkdir rmdir)

      Linux 的命令非常之多,而使用的最多最广最基本的莫过于一些常用的命令,如目录命令即是如此。Linux的常用目录命令与DOS中的目录命 令非常相...

8210
来自专栏前端杂货铺

服务端事件EventSource揭秘

服务端推 服务端推,指的是由服务器主动的向客户端发送消息(响应)。在应用层的HTTP协议实现中,“请求-响应”是一个round trip,它的起点来自客户端,因...

34050
来自专栏deed博客

win2003服务器安全设置教程

29940
来自专栏nummy

python blinker库学习

Blinker 是一个基于Python的强大的信号库,它既支持简单的对象到对象通信,也支持针对多个对象进行组播。Flask的信号机制就是基于它建立的。

14820
来自专栏安恒网络空间安全讲武堂

IAT Hook 技术分析

来源:https://pentest.blog/offensive-iat-hooking/

23320

扫码关注云+社区

领取腾讯云代金券