需求:

  批量新建10个测试用户,并且让其密码随机,把用户名和密码写入一个文件,并有创建时间和创建者

#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import random
import time
import io def deluser(nums):
'''删除用户测试用户'''
for i in range(nums):
username = 'stu' + str(i)
linux_cmd = 'userdel -r {username}'.format(username=username)
cmd_stat = os.system(linux_cmd)
if cmd_stat == 0:
print(username + " userdel: OK")
else:
print(username + " userdel: FAIL") def create_user(nums, record_adduser):
'''添加用户测试用户'''
if isinstance(nums, str):
nums = int(nums)
symbol = '1234567890'
if not os.path.exists(os.path.dirname(record_adduser)):
# 没有这个目录创建
os.mkdir(os.path.dirname(record_adduser))
# 这个文件直接打开,没有就创建
f = io.open(record_adduser, 'a+', encoding='utf-8')
for i in range(nums):
passwd = ''.join(random.sample(symbol, 6))
username = 'stu' + str(i)
linux_cmd = 'useradd {username} && echo "{passwd}" | passwd {username} --stdin{linesep}'.format(username=username,
passwd=passwd, linesep=os.linesep)
current_user = os.popen('whoami').read().strip()
cmd_stat = os.system(linux_cmd)
tmp = str(time.strftime('%Y-%m-%d %H:%M ', time.localtime()) + \
' ' + current_user + ' ' + linux_cmd + ' {stat}')
if cmd_stat == 0:
print(username + " useradd: OK")
tmp = tmp.format(stat='OK').decode('utf-8')
# 创建成功写一句
f.write(tmp)
else:
print(username + " useradd: FAIL")
tmp = tmp.format(stat='FAIL').decode('utf-8')
f.write(tmp)
# f.flush()
f.close() if __name__ == '__main__':
record_adduser = '/root/adduser{sep}useradd.log'.format(sep=os.path.sep)
create_user(10, record_adduser)
# deluser(10) # python 2 下,str 是 bytes类型,文件通过 io模块打开

  

  

linux批量添加10个用户并将其随机密码和用户名写入文件的更多相关文章

  1. 实现批量添加10个用户,用户名为user01-10,密码为user后面跟3个随机字符

    #!/bin/bash ` do user="user$i" password=$( | md5sum | ) useradd user$i echo "$user$pa ...

  2. 批量创建10个用户stu01-stu10

    1.批量创建10个用户stu01-stu10,并且设置随机8位密码,要求不能用shell循环(例如:for,while等),只能用命令及管道实现. ##方法1: [root@server tmp]# ...

  3. linux批量添加用户和批量修改密码

    一.批量创建用户通过命令newusers可以实现批量的创建用户.这个命令的用法为 newusers file.txt(一个文本文件)文本文件内存放需要批量添加的用户信息但是对格式有要求格式:pw_na ...

  4. Linux 批量添加用户

    #!/bin/bashfor i in $(seq 1 50)     #会建立1-50的用户douseradd student$i -g studentecho student$i |passwd ...

  5. linux (RHEL) 添加和删除用户

    linux添加新用户使用 useradd -----create a new user or update default new user information 删除用户使用userdel  -- ...

  6. linux mysql添加、删除用户、用户权限及mysql最大字段数量

    1.  登录: mysql -u username -p 显示全部的数据库: show databases; 使用某一个数据库: use databasename; 显示一个数据库的全部表: show ...

  7. Linux(7):用户管理

    用户管理 让一个脚本或命令开机自启动的方法: # 方法一: 把脚本放到 /etc/rc.local 中 # 方法二: 把脚本或命令通过 chkconfig 管理 # 如何让一个脚本被 chkconfi ...

  8. Linux实现批量添加用户及随机密码小脚本

    通过chpasswd命令可实现迅速为用户批量设置密码     实例:写一个脚本,实现批量添加20个用户user1-20,密码为用户名和后面跟5个随机字符 #!/bin/sh # 思路:通过for循环, ...

  9. Linux运维六:用户管理及用户权限设置

    Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...

随机推荐

  1. ul li内的文字水平居中显示

    head><style rel="stylesheet" type="text/css" >#top{height:140px;}#top u ...

  2. 【STL深入理解】vector

    这篇文章不打算讲述vector的基本用法,而是总结一下近期我大量阅读C++经典书籍时遇到的一些关于vector的容易忽略的知识点,特意将它们记录下来,以便以后查阅. 1.v[0]和v.at(0)的区别 ...

  3. python3之面向对象

    1.面向对象术语 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类属性(类变量):类属性在整个实例化的对象中是公用的.类属 ...

  4. MyEclipse2015上传项目到GitHub(很详细)

    MyEclipse 2015 默认已经安装了git插件,在MyEclipse中上传项目到github的步骤如下: 1.github官网(https://github.com)申请开通账号(略) 1.1 ...

  5. Vim 在 windows 环境下的初步配置

    一..下载工具包 vim 程序:下载安装程序 vim-plug 插件: 下载插件管理文件 二. 安装 VIM 1.如果无特别要求,一路选择默认, 在类型选择时,选择 full 2. 配置 vim-pl ...

  6. GO开发[三]:fmt,strings,strconv,指针,控制结构

    一.fmt包 %v 值的默认格式表示.当输出结构体时,扩展标志(%+v)会添加字段名 %#v 值的Go语法表示 %T 值的类型的Go语法表示 %% 百分号 %t 单词true或false %b 表示为 ...

  7. 工作整理: python报表系统常见错误整理

    1.一般收不到邮件是因为配置文件邮箱写错 2.如果报表数据不对,看数据插入的时候是否再次写入产生冲突 3.如果收不到报表某些组别的excel查看组别名称是否匹配正确,是否匹配成功,不成功无法发送

  8. 【C#系列】浅谈委托和委托

    本篇文章更适合具有一定开发经验,一定功底,且对底层代码有所研究的朋友!!! 本篇文章主要采用理论和代码实例相结合方法来论述委托和事件,涉及到一些边界技术,如软件架构的OCP原则(开-闭原则), 软件架 ...

  9. 全面总结: Golang 调用 C/C++,例子式教程

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  10. Jfinal控制器源码解读

    本文对Jfinal的控制器源码做以下分析. PS:控制器是所有请求跳转的基础,本文就Jfinal控制器的继承关系及初始化的方法做出解释说明. 啰嗦下:所有的请求和响应都是都是通过web容器封装,我们主 ...