详解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采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
python进程类subprocess的一些操作方法例子
Nov 22 Python
详解python中的json的基本使用方法
Dec 21 Python
使用Python实现博客上进行自动翻页
Aug 23 Python
使用Python制作微信跳一跳辅助
Jan 31 Python
python如何读写json数据
Mar 21 Python
值得收藏的10道python 面试题
Apr 15 Python
使用Python实现企业微信的自动打卡功能
Apr 30 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
Aug 28 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
如何使用 Python 读取文件和照片的创建日期
Sep 05 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/11/29 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
PHP错误Warning:mysql_query()解决方法
2015/10/24 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
php经典趣味算法实例代码
2020/01/21 PHP
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
在Django中实现添加user到group并查看
2019/11/18 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
乡镇三项教育实施方案
2014/03/30 职场文书
安全协议书
2014/04/23 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
身边的榜样活动方案
2014/08/20 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js
python利用while求100内的整数和方式
2021/11/07 Python
Axios代理配置及封装响应拦截处理方式
2022/04/07 Vue.js