python执行shell脚本报错_详解python执行shell脚本创建用户及相关操作
用户发送请求,返回帐号和密码
###利用框架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脚本创建用户及相关操作相关推荐
- python中filepath路径怎么写_详解Python中的路径问题
1. 绝对路径引入 Python 在搜索模块时,依次搜索sys.path里的位置,直到找到模块为止.下面命令可以查看当前的搜索路径: import sys print(sys.path) sys.pa ...
- python调用cmd命令释放端口_详解python调用cmd命令三种方法
目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...
- python正则匹配空格+数字+空格_详解Python中正则匹配TAB及空格的小技巧
详解Python中正则匹配TAB及空格的小技巧 发布时间:2020-10-15 08:38:48 来源:脚本之家 阅读:94 作者:杰瑞26 在正则中,使用.*可以匹配所有字符,其中.代表除\n外的任 ...
- python中yaml模块的使用_详解Python yaml模块
一.yaml文件介绍 yaml是一个专门用来写配置文件的语言. 1. yaml文件规则 区分大小写: 使用缩进表示层级关系: 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元 ...
- python中什么是可变参数_详解Python的三种可变参数
详解Python的三种可变参数 可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中, ...
- python中list[1啥意思_详解Python中list[::-1]的几种用法
本文主要介绍了Python中list[::-1]的几种用法,分享给大家,具体如下: s = "abcde" list的[]中有三个参数,用冒号分割 list[param1:para ...
- python中有那几种赋值_详解Python列表赋值复制深拷贝及5种浅拷贝
概述 在列表复制这个问题,看似简单的复制却有着许多的学问,尤其是对新手来说,理所当然的事情却并不如意,比如列表的赋值.复制.浅拷贝.深拷贝等绕口的名词到底有什么区别和作用呢? 列表赋值 # 定义一个新 ...
- python中fp是什么意思_详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3)...
详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3) 上一节简单讲了下FP树的生成,在这一节我将描述FP树的挖掘过程. 首先我们回顾一下要挖掘的特征项及样本空间: ...
- 仍然报错_详解oracle经典报错:ORA-04030排错思路和解决方法
概述 前段时间使用的oracle 11g数据库,在用一段时间后(开始要较长时间才出现,后来较短时间就出现),频繁报ORA-04030错误,具体错误信息是 ORA-04030: 在尝试分配...字节(. ...
- mysql创建数据库没有默认值报错_详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题...
现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for 'time' 原因 ...
最新文章
- Windows内核符号表学习总结
- android:allowBackup=true 数据备份(adb backup)+查看(abe unpack backup.ab backup.tar)+恢复(adb re)
- JMS--ActiveMq与spring整合(二)
- leetcode —— 783. 二叉搜索树结点最小距离
- 底部显示水平滚动_LG专利展示带有可滚动显示屏和触控笔的智能手机
- python教程视频 网盘-Python学习路线2019版(课程大纲+视频教程+网盘资源下载)...
- 移动终端安全模块技术研究
- docker容器的导入和导出
- Git报错:/c/Users/zhouy/AppData/Roaming/npm/hexo: line 12: node: command not found
- 看《岭南大医生》羽素与专家共揭痘痘背后的问题
- 账户注销及用户信息删除的合规实务问答
- 《数据结构》课程介绍
- c语言指针笔试面试题,c语言指针面试常见问题
- 美团java一面面经
- 毫无疑问计算机犯罪是一个很严重的问题英语,2017考研英语作文万能语句总结...
- 卧槽!一行代码让 Python 的运行速度提高100倍
- 架构设计:不存在放之四海皆准的解决方案
- halcon系列(1):高斯混合模型的一套算子
- 读博士的方法有哪些?什么是硕博连读?专硕如何读博?
- 前端如何实现后端运行进度_Web页面实现后台数据处理进度与剩余时间的显示
热门文章
- PAT排名汇总(排序)
- 砸金蛋vue插件_小程序商城系统插件代码该如何写?
- 2005/2010/2015-2021年全国兴趣点POI数据
- Java中的可变参数使用
- java 集合教程_Java Collections
- php如何查看端口有没被占用,如何查看某个端口被谁占用
- 朗逸发动机型号css和ea211的区别,css发动机是ea211吗
- tableau三轴该怎么做_举个栗子!Tableau技巧(30):巧妙实现 双柱图 和 折线图 的组合图表...
- php 正则预搜索?=
- linux 查看端口