注册账户后可访问私人网盘,树莓派

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/klli15/article/details/78011337

注册账户后可访问私人网盘,树莓派

实现功能:在网页注册成功后,树莓派自行创建专属于该账户的储存空间(相当于网盘),在windows中的网上邻居可访问。
建议先阅读,http://blog.csdn.net/klli15/article/details/78009455

环境

  1. python
  2. flask
  3. samba
  4. MySQL

环境安装

sudo pip install Flask # 安装flask

Mysql的安装请参考 http://blog.csdn.net/klli15/article/details/78009418

samba的安装和配置请参考 http://blog.csdn.net/klli15/article/details/78009455

安装依赖python 库

  1. MySQLdb 的安装:http://www.jb51.net/article/48827.htm,用于操作Mysql
  2. Pexpect的安装 sudo pip install pexpect ,用于创建用户过程中自动输入密码以完成网盘的创建

编辑注册页面

只用于测试,不求美观

<!DOCTYPE html>
<html>
<head>
    <title>注册</title>
</head>
<body>
    <form action="../check" method="post">
        注册:<input type="text" name="name" required="required">
        密码:<input type="password" name="pass" required="required">  
        <input type="submit" >
    </form>
    </body>
</html>

编辑Python脚本处理网页请求

#check.py

# coding: utf-8
from flask import Flask
from flask import request
from flask import send_file
import MySQLdb
import pexpect
import os

app=Flask(__name__)
@app.route('/index')
def index():
    return send_file('register.html') # 注册页面
@app.route("/check",methods=['POST', 'GET'])
def hello_word():   
    #return request.form['name'] 
    RName=request.form['name']  #获取表单数据
    RPassword= request.form['pass'] 
    isExit=0
    #return "hello#2"   
    db=MySQLdb.connect("localhost",'root','password','user_infor') #登录mysql
    cursor = db.cursor()  #获取游标
    cursor.execute('select * from user') # 执行Mysql语句
    exits=cursor.fetchall()  #获取所有的数据
    for i in exits: #防止重复注册
        name=i[1]
        if(RName==name):
            isExit=1  
            break
    if (isExit==1):
        return 'registed'

    os.system("sudo mkdir /home/pi/share/"+RName) #创建私人网盘
    #os.system("sudo chmod a+w /home/pi/"+RName)
    os.system("sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak") #备份
    fp=open('/etc/samba/smb.conf',"a") #追加配置文件
    tempStr="""[%s]
        path=/home/pi/share/%s
        read only =no 
        writable = yes
        public=no
        valid users=%s
        """%(RName,RName,RName)
    fp.write("\n"+tempStr)
    fp.close()  
    os.system("sudo useradd "+RName)    #smb用户要求必须要linux系统用户
    child=pexpect.spawn("sudo smbpasswd -a "+RName) 
    child.expect("New SMB password:")  #自行输入密码
    child.sendline(str (RPassword)) #记得要变为字符串
    child.expect("Retype new SMB password:") 
    child.sendline(str(RPassword))  
    os.system("sudo /etc/init.d/samba retsart") #重启samba服务
    #完成之后写进数据库,以免重复注册
    sql="""INSERT INTO user(name,password)VALUES ('%s','%s')"""%(RName,RPassword)
    try:
        cursor.execute(sql)
        db.commit() #交予数据库处理数据
    # return 'hello world'
    except:
        db.rollback()
        return "failed"
    db.close()
    return "successful"

if __name__=='__main__':
    app.run(debug=True,port=8181,host="192.168.137.220")

flask 文档:http://docs.jinkan.org/docs/flask
pexpect 使用实例:http://blog.csdn.net/xj626852095/article/details/51271541

执行脚本

sudo python check.py

访问注册页面

浏览器打开 hosts:port/index,如192.168.137.220:8181/index

输入账号密码,提交后显示“successful”

访问网盘

  • 方法一
    1. win+R(即“运行”快捷键)
    2. 输入\\树莓ip地址\账号\\192.168.137.220\15klli
    3. 输入15klli用户的账号密码
  • 方法二
    1. 打开windows的网上论据
    2. 双击 RASPBERRYPI
    3. 输入账号密码

猜你喜欢

转载自blog.csdn.net/klli15/article/details/78011337