详解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爬虫之HTTP异常处理
Nov 05 Python
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
简单易懂的python环境安装教程
Jul 13 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
Python内建模块struct实例详解
Feb 02 Python
Python标准库shutil用法实例详解
Aug 13 Python
PyQt5 窗口切换与自定义对话框的实例
Jun 20 Python
简单了解python元组tuple相关原理
Dec 02 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
Python如何使用bokeh包和geojson数据绘制地图
Mar 21 Python
Matlab中plot基本用法的具体使用
Jul 17 Python
Django中如何用xlwt生成表格的方法步骤
Jan 31 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
提升PHP执行速度全攻略(下)
2006/10/09 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
2010/06/11 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
php创建图像具体步骤
2017/03/13 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
理清apply(),call()的区别和关系
2011/08/14 Javascript
javascript包装对象实例分析
2015/03/27 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
微信小程序自定义模态对话框实例详解
2017/08/16 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
python读写ini文件示例(python读写文件)
2014/03/25 Python
python enumerate函数的使用方法总结
2017/11/15 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
python 实现Harris角点检测算法
2020/12/11 Python
心得体会开头
2014/01/01 职场文书
教导处工作制度
2014/01/18 职场文书
六一儿童节主持词
2014/03/21 职场文书
伊索寓言教学反思
2014/05/01 职场文书
授权委托书公证
2014/09/14 职场文书
2014年质量工作总结
2014/11/22 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python