详解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数据库具体方法
Oct 28 Python
一波神奇的Python语句、函数与方法的使用技巧总结
Dec 08 Python
python实现八大排序算法(1)
Sep 14 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
python 堆和优先队列的使用详解
Mar 05 Python
django的csrf实现过程详解
Jul 26 Python
Python中print函数简单使用总结
Aug 05 Python
Python中turtle库的使用实例
Sep 09 Python
opencv3/C++实现视频读取、视频写入
Dec 11 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
Jun 10 Python
python 用pandas实现数据透视表功能
Dec 21 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在线生成二维码代码(google api)
2013/06/03 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
yii2.0框架场景的简单使用示例
2020/01/25 PHP
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
在Vue中使用HOC模式的实现
2020/08/23 Javascript
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python 判断网络连通的实现方法
2018/04/22 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
python使用minimax算法实现五子棋
2019/07/29 Python
python多线程实现TCP服务端
2019/09/03 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
2014年医学生毕业自我鉴定
2014/03/26 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
Java使用Unsafe类的示例详解
2021/09/25 Java/Android