首页 > 系统相关 >先用python添加用户,再用shell脚本将python程序添加的用户删除

先用python添加用户,再用shell脚本将python程序添加的用户删除

时间:2023-03-08 21:32:21浏览次数:48  
标签:opt username python 用户 bee 添加 user password

1.python代码添加用户(在这里用列表推导生成100个用户)

import random,subprocess
from string import digits, ascii_letters
dic={'tom':'tom','jack':'123'}
def get_password(n=8):
password = ""
for i in range(n):
temp = random.choice(digits + ascii_letters)
password += temp
return password

def useradd(username,password,filename):
data=subprocess.run(f'id {username} &>/dev/null',shell=True)
if data.returncode == 0:
print(f"用户{username}已存在")
else:
subprocess.run(f'useradd {username}',shell=True)
subprocess.run(f'echo {password} |passwd --stdin {username}',shell=True)
with open(f"{filename}",mode='a') as fw:
fw.write(f'{username}:\t{password}\n')

if __name__ == '__main__':
user_list = [f'user{i}' for i in range(1,101)] #生成用户个数101-1
for username in user_list:
useradd(username,get_password(),'/opt/user.txt') #包含用户信息

1.1刚开始查看opt目录下只有一个文件​​userdel.sh​​是已经写好的脚本

[root@bee opt]# ls

​userdel.sh​

1.1.1、先查看系统中用户,这里是21个

[root@bee opt]# cat /etc/passwd |wc -l

21

python代码运行效果如下

更改用户 user1 的密码 。

更改用户 user2 的密码 。

.........

1.2运行python程序后再次查看,发现用户增加到121个了。

[root@bee opt]# cat /etc/passwd | wc -l

121

1.3python在opt下产生了user.txt文件

[root@bee opt]# ls

userdel.sh  user.txt

1.4查看user.txt文件内容

[root@bee opt]# cat user.txt

user1: x2lySpNy

user2: ewIIRoCF

........

2.shall删除用户${user%:} 因为生成的用户有面跟了个‘:‘(如上),所以在这里要先进行去尾工作

#!/bin/bash
num=0
for user in $(cat user.txt)
do
num=$[num+1]
if [ $[num%2] != 0 ];then
x=${user%:}
userdel -r $x
fi
done

2.1运行shall脚本后

[root@bee opt]# bash ​​​userdel.sh​​

2.2此时再次查看用户又回到了21

[root@bee opt]# cat /etc/passwd | wc -l

21

标签:opt,username,python,用户,bee,添加,user,password
From: https://blog.51cto.com/u_15937426/6108884

相关文章

  • 【流畅的Python0202】序列构成的数组
    1.内置序列类型概览容器序列能存放不同类型数据,因为存放的是任意对象的引用扁平序列只能存放相同类型的数据,因为存放的是值除了list、tuple和collections.dequ......
  • 实验1 Python开发环境使用和编程初体验
    一.实验结论:实验任务1:task1_1.py程序源码:1#print输出的几种用法23#用法1:用于输出单个字符串或单个变量4print('hey,u')56#用法2:用于输出多个数......
  • 用户交互Scanner
    Scanner对象Java给我们提供了可以实现程序和人的交互的工具类,我们可以获取用户的输入。java.util.Scanner是Java5的新特性,我们可以通过Scanner类来获取用户的输入。基本......
  • Python自动化登录验证码问题解决
     1.测试环境中通常解决验证码问题的方法 在测试环境中我们通常通过各种手段来逃避或者获得验证,而这些手段主要是要求开发者在开发的时候留有一定的后门。下面简述几种......
  • 利用Python实现批量获取端口Banner的工具
    主要用到的模块包括:Socket通讯模块threading多线程模块ipaddressip地址模块optparse命令行参数处理模块 importsocketimportsysimportopt......
  • ansible user模块批量修改用户密码
    目录ansibleuser模块批量修改用户密码更改多个用户更改单个用户ansibleuser模块批量修改用户密码更改多个用户//修改主机,账号,密码----hosts:zksitgather_facts......
  • python的基本认识
    python的基本认识 初识python:python是一种跨平台的、开源的、免费的、解释型的高级编程语言;python的应用领域十分广泛、如web编程、图像处理、黑客编程、网络爬虫和......
  • 实验1 python开发环境使用和编程初体验
    #task1_1.pyprint('hey,u')print('hey','u')x,y,z=1,2,3print(x,y,z)print('x=%d,y=%d,z=%d'%(x,y,z))print('x={},y={},z={}'.format(x,......
  • python 提取列表元素打印不带中括号
    目录python提取列表元素打印不带中括号python提取列表元素打印不带中括号有个需求,需要对python3的列表切片,获取得到用户名后和手动输入的用户名比对,如果一致就打印true......
  • Python实战项目-9 Redis/celery-基础使用
    Redis介绍与安装Redis->缓存数据库【大部分时间用来做缓存,不仅仅可以做缓存】也是称为非关系型数据库,区别与Mysql关系型数据库-noSql:泛指非关系型数据库,notonlySql......