详解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的自动化部署模块Fabric的安装及使用指南
Jan 19 Python
教你用Python脚本快速为iOS10生成图标和截屏
Sep 22 Python
Python实现计算圆周率π的值到任意位的方法示例
May 08 Python
TensorFlow 滑动平均的示例代码
Jun 19 Python
Flask框架信号用法实例分析
Jul 24 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
python opencv实现证件照换底功能
Aug 19 Python
导致python中import错误的原因是什么
Jul 01 Python
python缩进长度是否统一
Aug 02 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 Python
python脚本框架webpy模板赋值实现
Nov 20 Python
Python中的 enumerate和zip详情
May 30 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
第六节--访问属性和方法
2006/11/16 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
js实现简单登录功能的实例代码
2013/11/09 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
2015/11/07 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
pycharm远程调试openstack代码
2017/11/21 Python
pymysql模块的操作实例
2019/12/17 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
奶茶专卖店创业计划书
2014/01/18 职场文书
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
卖房协议书
2014/04/11 职场文书
维修工先进事迹
2014/05/29 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
升学宴家长致辞
2015/07/27 职场文书
vue+spring boot实现校验码功能
2021/05/27 Vue.js
Golang 链表的学习和使用
2022/04/19 Golang