详解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实现DNS正向查询、反向查询的例子
Apr 25 Python
python编写简单爬虫资料汇总
Mar 22 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
python pandas中DataFrame类型数据操作函数的方法
Apr 08 Python
使用python画个小猪佩奇的示例代码
Jun 06 Python
python实现换位加密算法的示例
Oct 14 Python
Python编程深度学习绘图库之matplotlib
Dec 28 Python
Python实现的爬取百度文库功能示例
Feb 16 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
Python shutil模块用法实例分析
Oct 02 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
Python调用REST API接口的几种方式汇总
Oct 19 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
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
配置支持SSI
2006/11/25 PHP
php 404错误页面实现代码
2009/06/22 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python对数组进行反转的方法
2015/05/20 Python
Sanic框架路由用法实例分析
2018/07/16 Python
python多进程控制学习小结
2018/10/31 Python
浅谈Python的list中的选取范围
2018/11/12 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
机械专业个人求职自荐信格式
2013/09/21 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
网络技术专业求职信
2014/05/02 职场文书
白血病捐款倡议书
2014/05/14 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
廉洁自律个人总结
2015/02/14 职场文书