详解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中使用mysql数据库详细介绍
Mar 27 Python
Python中使用hashlib模块处理算法的教程
Apr 28 Python
python之DataFrame实现excel合并单元格
Feb 22 Python
django中模板的html自动转意方法
May 27 Python
django rest framework 数据的查找、过滤、排序的示例
Jun 25 Python
浅谈Python爬虫基本套路
Mar 25 Python
python如何获取列表中每个元素的下标位置
Jul 01 Python
Python 使用 docopt 解析json参数文件过程讲解
Aug 13 Python
Python实现不规则图形填充的思路
Feb 02 Python
Python如何使用bokeh包和geojson数据绘制地图
Mar 21 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
Apr 13 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
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
文章推荐系统(三)
2006/10/09 PHP
php中的登陆login
2007/01/18 PHP
PHP访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
使用PHP生成PDF方法详解
2015/01/23 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
Extjs学习笔记之八 继承和事件基础
2010/01/08 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
2013/03/11 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
前端程序员必须知道的高性能Javascript知识
2016/08/24 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
Python中threading模块join函数用法实例分析
2015/06/04 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
Numpy截取指定范围内的数据方法
2018/11/14 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
团代会主持词
2014/04/02 职场文书
《风筝》教学反思
2014/04/10 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
2016优秀大学生个人事迹材料范文
2016/03/01 职场文书
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python