详解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 相关文章推荐
py中的目录与文件判别代码
Jul 16 Python
Windows系统下安装Python的SSH模块教程
Feb 05 Python
python实现telnet客户端的方法
Apr 15 Python
Python实现简单生成验证码功能【基于random模块】
Feb 10 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 Python
使用Keras训练好的.h5模型来测试一个实例
Jul 06 Python
如何通过命令行进入python
Jul 06 Python
python如何删除列为空的行
Jul 17 Python
解决Python安装cryptography报错问题
Sep 03 Python
Python图像识别+KNN求解数独的实现
Nov 13 Python
Anaconda安装pytorch及配置PyCharm 2021环境
Jun 04 Python
Python爬虫入门案例之回车桌面壁纸网美女图片采集
Oct 16 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 Try Catch异常测试
2009/03/01 PHP
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
fgetcvs在linux的问题
2012/01/15 PHP
php实现json编码的方法
2015/07/30 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
jQuery之尺寸调整组件的深入解析
2013/06/19 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
2014/11/08 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
JavaScript监听和禁用浏览器回车事件实例
2015/01/31 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
vue脚手架及vue-router基本使用
2018/04/09 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
[57:55]EG vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python之信息加密题目详解
2019/06/26 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
python中元组的用法整理
2020/06/15 Python
用python进行视频剪辑
2020/11/02 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
企业治理工作自我评价
2013/09/26 职场文书
企业节能减排实施方案
2014/03/19 职场文书
父母寄语大全
2014/04/12 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js