溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python如何執(zhí)行shell腳本創(chuàng)建用戶

發(fā)布時(shí)間:2021-07-12 10:27:51 來(lái)源:億速云 閱讀:152 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹python如何執(zhí)行shell腳本創(chuàng)建用戶,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

用戶發(fā)送請(qǐng)求,返回帳號(hào)和密碼

###利用框架flask
整體思路:

  1. # 目的:實(shí)現(xiàn)簡(jiǎn)單的登錄的邏輯

  2. # 1需要get和post請(qǐng)求方式 需要判斷請(qǐng)求方式

  3. # 2獲取參數(shù)

  4. # 3執(zhí)行shell

  5. # 4如果判斷都沒問(wèn)題,就返回結(jié)果

 導(dǎo)包

...

給模版?zhèn)鬟f消息 用flash --需要對(duì)內(nèi)容加密,因此需要設(shè)置 secret_key , 做加密消息的混淆

app = Flask(__name__)
app.secret_key = 'kingdomai'

使用wtf實(shí)現(xiàn)表單,需要自定義一個(gè)表單類

#validators=[DataRequired()保證填寫了內(nèi)容

class LoginForm(FlaskForm):
username = StringField('用戶名:', validators=[DataRequired()])
submit = SubmitField('提交')

設(shè)置游標(biāo),并且方法為get和post

@app.route('/form', methods=['GET', 'POST'])

定義一個(gè)方法

def login():
  login_form = LoginForm()

c判斷請(qǐng)求方式

if request.method == 'POST':

獲取請(qǐng)求參數(shù)

username = request.form.get('username')

驗(yàn)證參數(shù),wtf一句話實(shí)現(xiàn)校驗(yàn),沒有CSRF token將報(bào)錯(cuò),在表單中添加{{ form.csrf_token }}

 if login_form.validate_on_submit():

執(zhí)行shell

 username = username
  print('創(chuàng)建用戶...')
	# 創(chuàng)建用戶
  os.system('useradd %(name)s -s /home/work/%(name)s' % {'name': username})
	# 隨機(jī)一個(gè)密碼
  password = str((random.randint(100000, 999999)))
	# 設(shè)置密碼
  os.system('echo %(name)s:%(pwd)s |chpasswd' % {'name': username, 'pwd': password})
	# 將面試題放入新創(chuàng)建用戶路徑下
  os.system('cp -r /home/renligeng/exam/ /home/work/%(name)s' % {'name': username})
	# 設(shè)置該路徑權(quán)限
  os.system('chmod 700 /home/work/%(name)s' % {'name': username})
	# 設(shè)置用戶權(quán)限
  os.system('setfacl -m u:%(name)s:rwx /home/work/%(name)s' % {'name': username})
	# 輸出
  os.system('echo "您好,您的賬號(hào)為:" %(name)s ",密碼為:" %(pwd)s' % {'name': username, 'pwd': password})

  return ('您好,您的賬號(hào)為:' + 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判斷請(qǐng)求方式
  if request.method == 'POST':
    # 2獲取請(qǐng)求參數(shù)
    username = request.form.get('username')
    # 3驗(yàn)證參數(shù) 沒有CSRF token 會(huì)報(bào)錯(cuò)
    if login_form.validate_on_submit():

      # 執(zhí)行shell
      username = username
      print('創(chuàng)建用戶...')
      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 "您好,您的賬號(hào)為:" %(name)s ",密碼為:" %(pwd)s' % {'name': username, 'pwd': password})

      return ('您好,您的賬號(hào)為:' + username + ',密碼為:' + password)
    else:
      flash('請(qǐng)輸入用戶名')
  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如何執(zhí)行shell腳本創(chuàng)建用戶”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI