详解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中实现的RC4算法
Feb 14 Python
Python中for循环控制语句用法实例
Jun 02 Python
python发送邮件功能实现代码
Jul 15 Python
Python在线运行代码助手
Jul 15 Python
python+pillow绘制矩阵盖尔圆简单实例
Jan 16 Python
python爬虫实例详解
Jun 19 Python
Python编写合并字典并实现敏感目录的小脚本
Feb 26 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
keras slice layer 层实现方式
Jun 11 Python
keras用auc做metrics以及早停实例
Jul 02 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 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破解防盗链图片的一个简单方法
2014/06/07 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
JS中表单的使用小结
2014/01/11 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
jquery实现简单文字提示效果
2015/12/02 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
深入理解javascript中的this
2021/02/08 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
python多线程扫描端口示例
2014/01/16 Python
python模拟鼠标拖动操作的方法
2015/03/11 Python
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
使用Django简单编写一个XSS平台的方法步骤
2019/03/25 Python
python 同时读取多个文件的例子
2019/07/16 Python
详解Python绘图Turtle库
2019/10/12 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
银行办理业务介绍信
2014/01/18 职场文书
机电一体化应届生求职信范文
2014/01/24 职场文书
优秀导游先进事迹材料
2014/01/25 职场文书
请假条格式范文
2014/04/10 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python