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


Posted in Python onApril 11, 2019

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

###利用框架flask
整体思路:

  1. # 目的:实现简单的登录的逻辑
  2. # 1需要get和post请求方式 需要判断请求方式
  3. # 2获取参数
  4. # 3执行shell
  5. # 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
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<form method="post">
  {{ form.csrf_token }}
  {{ form.username.label }}{{ form.username }}<br>
  {{ form.submit }}<br>

  {% for message in get_flashed_messages() %}
    {{message}}
  {% endfor %}
  <hr>

</form>
</body>
</html>

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

 

Python 相关文章推荐
Python 流程控制实例代码
Sep 25 Python
在Python web中实现验证码图片代码分享
Nov 09 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
Python 变量类型详解
Oct 10 Python
Python中函数的返回值示例浅析
Aug 28 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
Oct 24 Python
基于python监控程序是否关闭
Jan 14 Python
通过实例解析python描述符原理作用
Jan 22 Python
Python爬虫基于lxml解决数据编码乱码问题
Jul 31 Python
基于Python组装jmx并调用JMeter实现压力测试
Nov 03 Python
Python偏函数实现原理及应用
Nov 20 Python
python中aioysql(异步操作MySQL)的方法
Apr 11 #Python
很酷的python表白工具 你喜欢我吗
Apr 11 #Python
2019 Python最新面试题及答案16道题
Apr 11 #Python
【python】matplotlib动态显示详解
Apr 11 #Python
python爬虫之验证码篇3-滑动验证码识别技术
Apr 11 #Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 #Python
python面试题小结附答案实例代码
Apr 11 #Python
You might like
第4章 数据处理-php数组的处理-郑阿奇
2011/07/04 PHP
php的ajax简单实例
2014/02/27 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
javascript 日期常用的方法
2009/11/11 Javascript
jQuery 自动增长的文本输入框实现代码
2010/04/02 Javascript
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
jquery导航制件jquery鼠标经过变色效果示例
2013/12/05 Javascript
Javascript Objects详解
2014/09/04 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
Python Queue模块详解
2014/11/30 Python
Python生成随机验证码的两种方法
2015/12/22 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
python操作文件的参数整理
2019/06/11 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
优秀少先队员主要事迹材料
2014/05/28 职场文书
2015年消防工作总结
2015/04/24 职场文书
幼儿园开学通知
2015/04/24 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
Python基础之Socket通信原理
2021/04/22 Python
vue 实现弹窗关闭后刷新效果
2022/04/08 Vue.js