详解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之大话题小函数(1)
Oct 10 Python
用Python生成器实现微线程编程的教程
Apr 13 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
Python 控制终端输出文字的实例
Jul 12 Python
如何通过50行Python代码获取公众号全部文章
Jul 12 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
Aug 07 Python
python中property属性的介绍及其应用详解
Aug 29 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 Python
Python 将json序列化后的字符串转换成字典(推荐)
Jan 06 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 17 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
Dec 04 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模板之Phpbean的目录结构
2008/01/10 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
jQuery.each()用法分享
2012/07/31 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
Python实现带百分比的进度条
2016/06/28 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
keras的三种模型实现与区别说明
2020/07/03 Python
python制作抽奖程序代码详解
2021/01/15 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
《美丽的公鸡》教学反思
2014/02/25 职场文书
纠纷协议书
2014/04/16 职场文书
后进生评语大全
2015/01/04 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android