利用python Socket写一个类似FTP的脚本(只写了下载,上传和下载差不多就不多写了)

Socket的介绍就不多说了,网上都能搜到,直接说脚本,要实现FTP的功能要有服务器端和客户端,

服务器端:

import SocketServer
import commands
import time

class MySockServer(SocketServer.BaseRequestHandler):
    def handle(self):
        print "Got a new conn from", self.client_address
        while True:
            cmd = self.request.recv(1024)
            if not cmd:break
            cmd = cmd.split()
            if cmd[0] =="get":
                print "Start transfer......."
                with open(cmd[1],‘rb‘) as f:
                    self.request.send(f.read())
                
                time.sleep(0.2)
                self.request.send("OOK")   #这算是个标示吧。客户端收到这个说明已经传完了
                continue
            cmd_result = commands.getstatusoutput(cmd[0])  #执行客户端发地来的shell命令
            self.request.send(cmd_result[1])
            

if __name__ == ‘__main__‘:
    host=‘‘
    port = 52167 
    s = SocketServer.ThreadingTCPServer((host,port), MySockServer)
    s.serve_forever()
    
客户端:
import socket
import time 

host = ‘x.x.x.x‘ #服务器的地址
port = 52167
addr = host,port
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(addr)

while True:
    Input = raw_input(‘Please your input:‘).strip()
    if len(Input)==0:continue
    s.send(Input)
    Input = Input.split()
    if Input[0]== ‘get‘:
        print "get file ....."
        with open(Input[1],‘wb‘) as f:
            f.write(s.recv(1024))
        time.sleep(0.2)
        if s.recv(1024) == "OOK":
            print "Down finsh ......" 
            continue  
    data = s.recv(1024)
    print data

一直在自学python但一直都是断断续续的不能坚持。学了好长时间才会写个简单的Socket,这智商让人捉急啊。

时间: 2024-10-08 16:58:50

利用python Socket写一个类似FTP的脚本(只写了下载,上传和下载差不多就不多写了)的相关文章

创建FTP站点,实现匿名用户的上传与下载

实验准备:一台安装了web服务器(IIS)的虚拟机,一台Windows系统的计算机实验步骤:1.安装FTP服务器①选择角色服务②勾选FTP服务③安装FTP服务器 2.①创建C盘根目录下的a文件夹作为FTP服务器站点的主目录 ②添加文件 1.txt到文件夹a里面⑤设置虚拟机ip地址3.①"开始"菜单--"管理工具"--"信息服务(IIS)管理器"中单击"添加FTP站点"②填写"FTP站点名称"及"物

使用python写一个监控mysql的脚本,在zabbix web上自定义模板

##先使用MySQLdb的接口关联数据库. [[email protected] python]# cat check_Mysql_custom.py #!/usr/local/bin/python '''author = chenmingle''' '''Description:get mysql status''' import os import sys try:     import MySQLdb as mysql except Exception, e:     print e   

python中FTP上传和下载

写这篇文章方便以后遇到需要定期去上传或下载时直接可以此简单模板. 1.python中FTP上传 #/usr/bin/python  # -*- coding: utf-8 -*-  import datetime import time import sys import os import ftplib def Upload_File():     ftp = ftplib.FTP()     TODAY=time.strftime('%Y-%m-%d')     FTPIP= "10.10.

用Python socket实现一个简单的http服务器(post 与get 的区别)

预备知识: 关于http协议的基础请参考这里. 关于socket基础函数请参考这里. 关于python网络编程基础请参考这里. 废话不多说,前面实现过使用linux c 或者python 充当客户端来获取http 响应,也利用muduo库实现过一个简易http服务器,现在来实现一个python版的简易http服务器,代码改编自http://www.cnblogs.com/vamei/ httpServer.py Python Code 1 2 3 4 5 6 7 8 9 10 11 12 13

通过socketserver模块写一个简单ftp程序

需求 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp server上随意切换目录 (cd) 允许用户查看当前目录下文件 (ls) 允许上传和下载文件,保证文件一致性(get put) 文件传输过程中显示进度条 支持文件的断点续传 分析

用shell和python实现FTP自动登陆然后上传和下载

1.ftp自动登陆下载文件 -n 不受.netrc文件的影响.(ftp默认为读取.netrc文件中的设定) !是即时文件的标志它必须成对出现,以标识即时文件的开始和结尾 binary -   设置文件传输类型为binary(二进制传输)  prompt -  开关交互提示(默认为ON) close -   结束FTP会话并返回命令行 quit -  结束FTP会话并退出FTP(功能通bye) mget -  复制一个或多个远程文件至本地 get -   复制单个远程文件到本地 put -  复制

使用python操作FTP上传和下载

Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下 ftp登陆连接 from ftplib import FTP #加载ftp模块 ftp=FTP() #设置变量 ftp.set_debuglevel(2) #打开调试级别2,显示详细信息 ftp.connect("IP","port") #连接的ftp sever和端口 ftp.login("user","

企业网络中利用FTP协议来实现文件的上传和下载

FTP技术的概念 文件传输协议,FTP是用来传送文件的协议.使用FTP实现远程文件传输的同时,还可以保证数据传输的可靠性和高效性 FTP协议的作用:可以在服务器上面下载文件 或者在本地上传文件到服务器里面 FTP的控制层面和数据层面 客户端(client)和服务器(server):简称为C/S模式 控制平面和转发平面(数据平面) 控制平面:主要保证服务器和客户端之间通信,使用的是TCP的21号端口 客户端----->>>>>服务器进行连接 TCP 源端口 随机 目标端口 21

Python + Selenium + AutoIt 模拟键盘实现另存为、上传、下载操作详解

前言 在web页面中,可以使用selenium的定位方式来识别元素,从而来实现页面中的自动化,但对于页面中弹出的文件选择框,selenium就实现不了了,所以就需引用AutoIt工具来实现. AutoIt介绍 AutoIt简单介绍下,AutoIt 目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务.而这是其它语言不可能做到或无可靠方法实现的(例如VBSc