详解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 相关文章推荐
windows系统中python使用rar命令压缩多个文件夹示例
May 06 Python
使用FastCGI部署Python的Django应用的教程
Jul 22 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
Ubuntu 下 vim 搭建python 环境 配置
Jun 12 Python
Python星号*与**用法分析
Feb 02 Python
Python实现的爬虫刷回复功能示例
Jun 07 Python
对python中的 os.mkdir和os.mkdirs详解
Oct 16 Python
python实现维吉尼亚加密法
Mar 20 Python
Django的models中on_delete参数详解
Jul 16 Python
python下PyGame的下载与安装过程及遇到问题
Aug 04 Python
在pycharm中关掉ipython console/PyDev操作
Jun 09 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中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
php无限级分类实现方法分析
2016/10/19 PHP
二级域名转向类
2006/11/09 Javascript
javascript 流畅动画实现原理
2009/09/08 Javascript
jquery随意添加移除html的实现代码
2011/06/21 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
js实现仿百度瀑布流的方法
2015/02/05 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
2020/01/21 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
详解Python3中yield生成器的用法
2015/08/20 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
通过python检测字符串的字母
2020/02/18 Python
python字符串判断密码强弱
2020/03/18 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
英国香水店:The Perfume Shop
2017/03/27 全球购物
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
上课睡觉检讨书
2014/01/28 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
工作后的感想
2015/08/07 职场文书
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏
Django框架之路由用法
2022/06/10 Python
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang