详解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 28 Python
讲解Python中的标识运算符
May 14 Python
Python2.x版本中cmp()方法的使用教程
May 14 Python
Python实现快速排序和插入排序算法及自定义排序的示例
Feb 16 Python
对tf.reduce_sum tensorflow维度上的操作详解
Jul 26 Python
python使用xlrd和xlwt读写Excel文件的实例代码
Sep 05 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
Python进度条的制作代码实例
Aug 31 Python
sklearn+python:线性回归案例
Feb 24 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
python tkinter实现连连看游戏
Nov 16 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开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
PHP文件上传类实例详解
2016/04/08 PHP
PHP实现限制IP访问及提交次数的方法详解
2017/07/17 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
javascript 写的一个简单的timer
2009/07/30 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
Python如何发布程序的详细教程
2018/10/09 Python
python3安装crypto出错及解决方法
2019/07/30 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
python 实现端口扫描工具
2020/12/18 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
大学生个人求职信范文
2013/09/21 职场文书
办公室经理岗位职责
2014/01/01 职场文书
外贸专业求职信
2014/03/09 职场文书
教师求职自荐书
2014/06/14 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
Golang入门之计时器
2022/05/04 Golang