详解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中的列表知识点汇总
Apr 14 Python
Python基于Socket实现的简单聊天程序示例
Aug 05 Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 Python
python并发和异步编程实例
Nov 15 Python
Python Threading 线程/互斥锁/死锁/GIL锁
Jul 21 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
浅析PyTorch中nn.Linear的使用
Aug 18 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
Python3如何使用多线程升程序运行速度
Aug 11 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
python sleep和wait对比总结
Feb 03 Python
python内置进制转换函数的操作
Jun 02 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动态生成JavaScript代码
2009/03/09 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
JavaScript中的闭包原理分析
2010/03/08 Javascript
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
2013/12/30 Javascript
js读取配置文件自写
2014/02/11 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
js实现点击生成随机div
2020/01/16 Javascript
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
浅析python中的迭代与迭代对象
2018/10/08 Python
Python猜数字算法题详解
2020/03/01 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
css3进阶之less实现星空动画的示例代码
2019/09/10 HTML / CSS
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
母亲节感恩活动记录
2014/03/16 职场文书
教师对学生的寄语
2014/04/03 职场文书
推荐信怎么写
2014/05/09 职场文书
党建工作整改措施
2014/10/28 职场文书
工程服务质量承诺书
2015/04/29 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
筑梦中国心得体会
2016/01/18 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
Redis中一个String类型引发的惨案
2021/07/25 Redis
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记
mysql sock文件存储了什么信息
2022/07/15 MySQL
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang