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

来源:互联网 发布:生鲜超市销售数据分析 编辑:程序博客网 时间:2024/06/09 18:27

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

实现功能:在网页注册成功后,树莓派自行创建专属于该账户的储存空间(相当于网盘),在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-8from flask import Flaskfrom flask import requestfrom flask import send_fileimport MySQLdbimport pexpectimport osapp=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. 输入账号密码