详解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实现的数据结构与算法之链表详解
Apr 22 Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 Python
Python判断文件或文件夹是否存在的三种方法
Jul 27 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
基于numpy中数组元素的切片复制方法
Nov 15 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
python 计算数据偏差和峰度的方法
Jun 29 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
如何在python中实现随机选择
Nov 02 Python
python报错: 'list' object has no attribute 'shape'的解决
Jul 15 Python
90行Python代码开发个人云盘应用
Apr 20 Python
Python jiaba库的使用详解
Nov 23 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创建Cookie数组的详解
2013/07/03 PHP
php读取和保存base64编码的图片内容
2017/04/22 PHP
js技巧--转义符&quot;\&quot;的妙用
2007/01/09 Javascript
JavaScript 的方法重载效果
2009/08/07 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
JavaScript学习笔记之数组求和方法
2016/03/23 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
Python面向对象编程之继承与多态详解
2018/01/16 Python
flask-restful使用总结
2018/12/04 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
介绍一下Linux中的链接
2016/05/28 面试题
高二生物教学反思
2014/01/27 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
员工离职证明范本
2015/06/12 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
Java 多态分析
2022/04/26 Java/Android