用户发送请求,返回帐号和密码

###利用框架flask

整体思路:

# 目的:实现简单的登录的逻辑

# 1需要get和post请求方式 需要判断请求方式

# 2获取参数

# 3执行shell

# 4如果判断都没问题,就返回结果

导包

...

给模版传递消息 用flash --需要对内容加密,因此需要设置 secret_key , 做加密消息的混淆

app = Flask(__name__)

app.secret_key = 'kingdomai'

使用wtf实现表单,需要自定义一个表单类

#validators=[DataRequired()保证填写了内容

class LoginForm(FlaskForm):

username = StringField('用户名:', validators=[DataRequired()])

submit = SubmitField('提交')

设置游标,并且方法为get和post

@app.route('/form', methods=['GET', 'POST'])

定义一个方法

def login():

login_form = LoginForm()

c判断请求方式

if request.method == 'POST':

获取请求参数

username = request.form.get('username')

验证参数,wtf一句话实现校验,没有CSRF token将报错,在表单中添加{{ form.csrf_token }}

if login_form.validate_on_submit():

执行shell

username = username

print('创建用户...')

# 创建用户

os.system('useradd %(name)s -s /home/work/%(name)s' % {'name': username})

# 随机一个密码

password = str((random.randint(100000, 999999)))

# 设置密码

os.system('echo %(name)s:%(pwd)s |chpasswd' % {'name': username, 'pwd': password})

# 将面试题放入新创建用户路径下

os.system('cp -r /home/renligeng/exam/ /home/work/%(name)s' % {'name': username})

# 设置该路径权限

os.system('chmod 700 /home/work/%(name)s' % {'name': username})

# 设置用户权限

os.system('setfacl -m u:%(name)s:rwx /home/work/%(name)s' % {'name': username})

# 输出

os.system('echo "您好,您的账号为:" %(name)s ",密码为:" %(pwd)s' % {'name': username, 'pwd': password})

return ('您好,您的账号为:' + username + ',密码为:' + password)

全部代码

mianshi.py

from flask import Flask, render_template, request, flash

from flask_wtf import FlaskForm

from wtforms import StringField, SubmitField

from wtforms.validators import DataRequired

import os

import random

app = Flask(__name__)

app.secret_key = 'kingdomai'

class LoginForm(FlaskForm):

username = StringField('用户名:', validators=[DataRequired()])

submit = SubmitField('提交')

@app.route('/form', methods=['GET', 'POST'])

def login():

login_form = LoginForm()

# 1判断请求方式

if request.method == 'POST':

# 2获取请求参数

username = request.form.get('username')

# 3验证参数 没有CSRF token 会报错

if login_form.validate_on_submit():

# 执行shell

username = username

print('创建用户...')

os.system('useradd %(name)s -s /home/work/%(name)s' % {'name': username})

password = str((random.randint(100000, 999999)))

os.system('echo %(name)s:%(pwd)s |chpasswd' % {'name': username, 'pwd': password})

os.system('cp -r /home/renligeng/exam/ /home/work/%(name)s' % {'name': username})

os.system('chmod 700 /home/work/%(name)s' % {'name': username})

os.system('setfacl -m u:%(name)s:rwx /home/work/%(name)s' % {'name': username})

os.system('echo "您好,您的账号为:" %(name)s ",密码为:" %(pwd)s' % {'name': username, 'pwd': password})

return ('您好,您的账号为:' + username + ',密码为:' + password)

else:

flash('请输入用户名')

return render_template('index.html', form=login_form)

if __name__ == '__main__':

app.run(

debug=True

)

index.html

Title

{{ form.csrf_token }}

{{ form.username.label }}{{ form.username }}

{{ form.submit }}

{% for message in get_flashed_messages() %}

{{message}}

{% endfor %}


以上所述是小编给大家介绍的python执行shell脚本创建用户及相关操作详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

本文标题: 详解python执行shell脚本创建用户及相关操作

本文地址: http://www.cppcns.com/jiaoben/python/256981.html

python执行shell脚本报错_详解python执行shell脚本创建用户及相关操作相关推荐

  1. python中filepath路径怎么写_详解Python中的路径问题

    1. 绝对路径引入 Python 在搜索模块时,依次搜索sys.path里的位置,直到找到模块为止.下面命令可以查看当前的搜索路径: import sys print(sys.path) sys.pa ...

  2. python调用cmd命令释放端口_详解python调用cmd命令三种方法

    目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...

  3. python正则匹配空格+数字+空格_详解Python中正则匹配TAB及空格的小技巧

    详解Python中正则匹配TAB及空格的小技巧 发布时间:2020-10-15 08:38:48 来源:脚本之家 阅读:94 作者:杰瑞26 在正则中,使用.*可以匹配所有字符,其中.代表除\n外的任 ...

  4. python中yaml模块的使用_详解Python yaml模块

    一.yaml文件介绍 yaml是一个专门用来写配置文件的语言. 1. yaml文件规则 区分大小写: 使用缩进表示层级关系: 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元 ...

  5. python中什么是可变参数_详解Python的三种可变参数

    详解Python的三种可变参数 可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中, ...

  6. python中list[1啥意思_详解Python中list[::-1]的几种用法

    本文主要介绍了Python中list[::-1]的几种用法,分享给大家,具体如下: s = "abcde" list的[]中有三个参数,用冒号分割 list[param1:para ...

  7. python中有那几种赋值_详解Python列表赋值复制深拷贝及5种浅拷贝

    概述 在列表复制这个问题,看似简单的复制却有着许多的学问,尤其是对新手来说,理所当然的事情却并不如意,比如列表的赋值.复制.浅拷贝.深拷贝等绕口的名词到底有什么区别和作用呢? 列表赋值 # 定义一个新 ...

  8. python中fp是什么意思_详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3)...

    详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3) 上一节简单讲了下FP树的生成,在这一节我将描述FP树的挖掘过程. 首先我们回顾一下要挖掘的特征项及样本空间: ...

  9. 仍然报错_详解oracle经典报错:ORA-04030排错思路和解决方法

    概述 前段时间使用的oracle 11g数据库,在用一段时间后(开始要较长时间才出现,后来较短时间就出现),频繁报ORA-04030错误,具体错误信息是 ORA-04030: 在尝试分配...字节(. ...

  10. mysql创建数据库没有默认值报错_详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题...

    现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for 'time' 原因 ...

最新文章

  1. Windows内核符号表学习总结
  2. android:allowBackup=true 数据备份(adb backup)+查看(abe unpack backup.ab backup.tar)+恢复(adb re)
  3. JMS--ActiveMq与spring整合(二)
  4. leetcode —— 783. 二叉搜索树结点最小距离
  5. 底部显示水平滚动_LG专利展示带有可滚动显示屏和触控笔的智能手机
  6. python教程视频 网盘-Python学习路线2019版(课程大纲+视频教程+网盘资源下载)...
  7. 移动终端安全模块技术研究
  8. docker容器的导入和导出
  9. Git报错:/c/Users/zhouy/AppData/Roaming/npm/hexo: line 12: node: command not found
  10. 看《岭南大医生》羽素与专家共揭痘痘背后的问题
  11. 账户注销及用户信息删除的合规实务问答
  12. 《数据结构》课程介绍
  13. c语言指针笔试面试题,c语言指针面试常见问题
  14. 美团java一面面经
  15. 毫无疑问计算机犯罪是一个很严重的问题英语,2017考研英语作文万能语句总结...
  16. 卧槽!一行代码让 Python 的运行速度提高100倍
  17. 架构设计:不存在放之四海皆准的解决方案
  18. halcon系列(1):高斯混合模型的一套算子
  19. 读博士的方法有哪些?什么是硕博连读?专硕如何读博?
  20. 前端如何实现后端运行进度_Web页面实现后台数据处理进度与剩余时间的显示

热门文章

  1. PAT排名汇总(排序)
  2. 砸金蛋vue插件_小程序商城系统插件代码该如何写?
  3. 2005/2010/2015-2021年全国兴趣点POI数据
  4. Java中的可变参数使用
  5. java 集合教程_Java Collections
  6. php如何查看端口有没被占用,如何查看某个端口被谁占用
  7. 朗逸发动机型号css和ea211的区别,css发动机是ea211吗
  8. tableau三轴该怎么做_举个栗子!Tableau技巧(30):巧妙实现 双柱图 和 折线图 的组合图表...
  9. php 正则预搜索?=
  10. linux 查看端口