阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里

闲来无聊搭了个ftp服务器,为了朋友间传文件可以方便一点,传一些大文件可以不用忍受度盘的龟速。可能本人比较菜,搭建的过程比较艰难,光是教程就查了好多,为了后续有朋友可以也享受搭建自己的ftp服务器,也写了一篇教程,希望可以帮到大家。

首先需要在阿里云本地实例安全组中放行以下规则(重要):
端口21以及端口1024/65535
我们连接到实例,然后在windows开始菜单中,选择服务器管理器阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第1张图片
或者在控制面版中选择启用或关闭windows功能阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第2张图片
在打开的服务器管理器中,选择添加角色和功能
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第3张图片
在向导中的服务器角色里,勾选web服务器添加功能阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第4张图片
角色服务中勾选ftp服务器阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第5张图片
点击下一步并安装:
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第6张图片
至此ftp功能安装完成,接下来对ftp服务器进行配置,打开服务器管理器右上角的工具,选择IIS管理器
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第7张图片
iis管理器左侧的菜单下拉,并在网站的选项卡右键,选择添加ftp站点
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第8张图片
站点名称可以自行编辑,这里以ftptest为例,物理路径是你要用来当作ftp服务器存放文件的地方,此处在桌面新建一个名为“ftp”的文件夹并选中:
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第9张图片
ip选择下拉菜单中的任意一个,端口保持默认,你也可以选择其他端口,但是考虑到还需要去阿里云控制台添加放行规则,这里还是建议默认21端口,ssl请根据需要来设置:
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第10张图片
身份验证可以选择对匿名用户和基本用户进行验证,授权可以根据需要来设置,后续也可以进行更改:
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第11张图片
至此,ftp服务器的基本设置完成:
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第12张图片
身份验证以及授权规则是刚刚最后一步的设置,可以后续自行更改:
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第13张图片
授权规则里,你可以设置针对指定的用户设置授权规则:
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第14张图片
这就需要为你的计算机创建一个新的用户,在服务器管理器的右上角工具里,选择计算机管理,打开到本地用户和组,右键创建一个新用户
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第15张图片
这里新建一个ftptest的用户:
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第16张图片
在设置用户名和密码的时候,要注意以下几个规则:

  • 密码需要由至少一个大写英文字母、小写英文字母以及数字组成
  • 一个比较隐蔽的点,也是我尝试过多次得出来的结论,就是密码里尽量不要包含和用户名顺序一样的字母或数字,比如用户名是ftp,那么如果密码出现ftp,则无法创建用户

如果不注意这些规则,就会出现以下报错:
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第17张图片
为了安全着想,防止你将账号共享给别人后,别人可以用这个账号来远程登录你的主机,需要在新建的用户那里右键,选择属性,并在上边选择远程控制选项卡,将启用远程控制取消勾选:
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第18张图片
添加完用户后,我们需要给ftp服务器的文件夹添加这个新用户的访问权限,在ftp站点右键,选择编辑权限
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第19张图片
选择安全选项卡,并点击编辑
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第20张图片
点击添加,并在框中输出“ftptest”,点击确定
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第21张图片
根据你的需要来勾选这些权限,这边选择完全控制
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第22张图片
接下来配置最后一步,也是重要的一步,否则会出现奇怪的报错,点击图中框1的选项卡(注意一定要是框1那里的选项卡,名字和我图里的不一样是正常的,因为实例的名称是不一样的),然后点框2ftp防火墙支持
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第23张图片
服务器的外部ip地址里填上你主机的公网ip(也就是你用来远程连接的ip),然后启用
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第24张图片
至此,ftp服务器遍搭建完毕,在另一台主机上试着连接看看,打开文件管理器输入ftp://(此处填你主机的公网ip),然后连接,出现输入用户名和密码:
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第25张图片
发现ftp里空空如也:
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第26张图片
别担心,那是因为你ftp里真的没有东西,回到服务器上操作,新建一个文档:阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第27张图片
再刷新一遍就看到了:
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第28张图片
本来到此也结束了,但是我突然想到,ftp服务器本身是无法从登入的那一方看到剩余容量的,万一一个不小心吧服务器容量撑爆了那就不好了,但是想要看这个容量就需要远程连接到主机查看,这样太麻烦,于是就想到了写个小小的python程序,来实现定时把服务器容量写入到ftp里,这样就可以直接登录ftp服务器查看了。话不多说,开干。
首先需要安装python环境,这里我用的是python3,关于python的下载以及环境的配置我就不多赘述了,贴上一个帖子:https://blog.csdn.net/qq_44275733/article/details/96142294
剩下的就是将下载的python传到服务器里,你可以选择在服务器的浏览器下载,也可以选择本地下载后上传到ftp里,再从服务器打开,这个时候ftp的作用就显现出来了。
在编写python程序之前,需要安装win32com模块,具体操作如下:
在服务器端,将鼠标放在win的开始菜单的图标上,右键,选择运行,输入cmd,并在cmd里输入这行命令:
python -m pip install pypiwin32
具体参考这篇文章:https://blog.csdn.net/a15986714591/article/details/78181034
接下来贴一下我的程序(文章写完发布完才发现自己程序有些地方错了就重新改了一遍,所以最后的那张图与下方程序不一样):

import win32com.client as wc
import time
import os


#获取drive完整空间
def TotalSize(drive):
  try:
    fso = wc.Dispatch("Scripting.FileSystemObject")
    drv = fso.GetDrive(drive)
    return drv.TotalSize/2**30
  except:
    return 0
#获取drive剩余空间
def FreeSpace(drive):
  try:
    fso = wc.Dispatch("Scripting.FileSystemObject")
    drv = fso.GetDrive(drive)
    return drv.FreeSpace/2**30
  except:
    return 0
    
#定义drive,可以根据你要获取容量的磁盘的盘符来改
drive = ("C:")

#添加一个定时器
def timer(n):
    while True:
      with open(r'C:\Users\Administrator\Desktop\ftp\服务器全部空间=%f GB.txt' % TotalSize(drive),"w") as f1,open(r'C:\Users\Administrator\Desktop\ftp\服务器剩余空间=%f GB.txt' % FreeSpace(drive),"w") as f2,open(r'C:\Users\Administrator\Desktop\ftp\时间:%s.txt' % time.strftime('%Y-%m-%d %Hh%Mm%Ss'),"w") as f3:
        f1.close()
        f2.close()
        f3.close()
        time.sleep(n)
#使用os.remove将产生的旧文件删除
        pathlog =r"C:\Users\Administrator\Desktop\ftp"
        files = os.listdir(pathlog)
        for f in files:
          if f.endswith('.txt'):
            os.remove(r'C:\Users\Administrator\Desktop\ftp/%s' % f)

#timer中的n,也就是3600,是秒数,3600秒是一小时,所以我服务器的容量信息文件一个小时更新一次
timer(3600)

将代码复制,并保存成getspace.py,或者你也可以改成其他名字。然后运行即可
阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里_第29张图片

你可能感兴趣的:(阿里云windows server2019实例搭建ftp服务器,并编写一个简单的python程序实现定时将服务器容量写入ftp的文档里)