详解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判断操作系统类型代码分享
Nov 22 Python
Python操作MySQL简单实现方法
Jan 26 Python
线程和进程的区别及Python代码实例
Feb 04 Python
Python使用面向对象方式创建线程实现12306售票系统
Dec 24 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
利用Python库Scapy解析pcap文件的方法
Jul 23 Python
python如果快速判断数字奇数偶数
Nov 13 Python
python [:3] 实现提取数组中的数
Nov 27 Python
python 如何快速复制序列
Sep 07 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
Sep 25 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
Oct 29 Python
python接口测试返回数据为字典取值方式
Feb 12 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 动态生成静态HTML页面示例代码
2014/01/15 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
JavaScript实用技巧(一)
2010/08/16 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
jquery中 $.expr使用实例介绍
2014/06/09 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
window.onload使用指南
2015/09/13 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
PHP7新特性简述
2017/06/11 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
Python利用ansible分发处理任务
2015/08/04 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
浅谈Python 的枚举 Enum
2017/06/12 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
什么时候用assert
2015/05/08 面试题
建筑行业的大学生自我评价
2013/12/08 职场文书
经济管理专业自荐信
2013/12/30 职场文书
银行员工辞职信范文
2014/01/20 职场文书
旅游个人求职信范文
2014/01/30 职场文书
服务质量承诺书
2014/03/27 职场文书
学习礼仪心得体会
2014/09/01 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
会议欢迎词
2015/01/23 职场文书
运动会主持词大全
2015/07/02 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python