批量增加Linux系统账号、重置账号密码、FTP账号批量测试

时间:2022-09-09 16:36:44

批量增加Linux系统账号、重置账号密码是用Linux Shell脚本来做的;批量FTP账号测试是用Python脚本来做的。这些脚本都是读取一个用户名和密码文件,然后基于该用户名密码文件进行自动批量测试。

这些脚本并没有多少技术含量,只是初次写起来需要调试耗费一点时间,希望能给需要的人节省时间,避免不必要的加班 ^_^

用户名密码文件格式如下:

每一行都是用户名和密码,用户名和密码之间用空格或者TAB制表符分割。

批量增加Linux系统账号、重置账号密码、FTP账号批量测试

批量增加系统账号

#!/bin/bash

cat ./ftp_account.txt | while read line
do
if [ "$line" = "" ]
then
exit
fi
account=`echo $line|awk -F ' ' '{print $1}'`
password=`echo $line|awk -F ' ' '{print $2}'`
loginShell=`which nologin`
useradd $account -s $loginShell -b /home/log/cachelogbak/newlog
echo "$account:$password"| chpasswd
done

代码工作流程:

首先循环读取当前目录下一个叫做 ftp_account.txt 的用户名密码文件。每次一行,使用每一行之前先判断是不是空行(或到了最后一行了),然后切分读入的一行,切分为2个元素,第一个元素是用户名,第二个为密码,由于ubuntu和centos的nologin shell路径不同,因此用which找出具体路径,然后用useradd来创建相应用户并设置该账号的home目录和shell,最后调用chpasswd来更改该用户的密码。

批量重置账号密码

#!/bin/bash

cat ./ftp_account.txt | while read line
do
if [ "$line" = "" ]
then
exit
fi
account=`echo $line|awk -F ' ' '{print $1}'`
password=`echo $line|awk -F ' ' '{print $2}'`
echo "$account:$password"| chpasswd
done

代码工作流程:

其实就是前面第一个脚本的简略版,只不过省略了创建用户账号的那一步,仅仅调用chpasswd来更改密码。

批量测试FTP账号

#!/usr/bin/python
#-*-coding:utf-8 -*- import os
import sys
import time
import signal
import datetime from ftplib import FTP """
===ftp_account.txt content===
user1 passwd1
user2 passwd2
user3 passwd3
""" #======================================
def sigHandle(sig, frame):
print('\nPython script terminated')
os._exit(0) signal.signal(signal.SIGINT, sigHandle)
#====================================== if os.path.exists('./ftp_account.txt'):
fd = open('./ftp_account.txt', 'r')
else:
print "no such file"
os._exit(-1) ftp = FTP()
i = 0
j = 0
MAX = 0
fail_dict = {}
while 1:
line = fd.readline()
if not line:
break line = line.strip('\n').split()
if len(line) != 2:
print "wrong file format, break..."
continue try:
print "正在测试 %s" % line[0]
ftp.connect(host="192.168.1.49", timeout=30)
ftp.login(line[0], line[1])
ftp.close()
i += 1
except Exception as e:
if len(line[0]) > MAX:
MAX = len(line[0]) fail_dict[line[0]] = str(e)
j += 1 print "成功%d个," % i + "失败%d个" % j
for each in fail_dict:
print("失败账号: {0:<%d}," % MAX).format(each) + (" 失败原因: {0:<%d}" % MAX).format(fail_dict[each]) # 如果在Python 2.6上无法使用上面的print代码,请使用下面的代码
# for each in fail_dict:
# print"失败账号: %s," % each + " 失败原因: %s" % fail_dict[each]

代码工作流程:

首先判断是否存在ftp_account.txt这个用户名密码文件,不存在则退出。

然后用Python自带的ftp库ftplib来创建一个ftp对象,并且声明3个计数器,i用于记录成功的账户数,j用来记录失败的账户数,MAX则用于最后的字符串格式化对齐。fail_dict字典则用来详细记录错误的ftp账户和错误原因。

接下来循环读取 ftp_account.txt 的用户名密码文件。每次一行,使用每一行之前先判断是不是空行(或到了最后一行了),然后切分读入的一行,切分为含2个元素的list列表,第一个元素是用户名,第二个为密码。如果list长度不为2,则说明用户名密码文件格式错误,跳过这错误的一行。然后开始连接指定的ftp服务器192.168.1.49,并设置超时为30秒。如果连接成功,紧接着关闭连接,并增加成功计数;如果失败,则抛出异常,增加失败计数,并将失败的账号和原因记录到fail_dict,同时找出失败账号字符串长度最长的那个值用于后面的格式化对齐。最后打印出成功失败数,以及哪些失败和失败原因。

sigHandle函数是用来在中途退出上面的脚本时阻止一大堆烦人的输出。

批量增加Linux系统账号、重置账号密码、FTP账号批量测试的更多相关文章

  1. shell实现增加删除Linux系统用户脚本(密码为随机)

    README shell环境下运行脚本,根据需求选择相应的功能. List \t\t create the userlist 这一步是必须执行的,脚本会识别本地当前目录下的文件 Useradd \t\ ...

  2. Linux系统root用户忘记密码解决方法

    一:在linux系统启动时(如下图),按e键 二:进入到设置页面,定位到如下行: 三:按e键,进入输入界面 四:在编辑行最后面,空格,输入single,回车后回到第二步界面,只是后面多了single ...

  3. Windows和Linux下Mysql 重置root 密码

    Windows系统下一:进入Windows窗口cmd命令行下,停止mysql服务: net stop mysql二:进入mysql的安装目录下,进去bin目录mysqld-nt.exe --skip- ...

  4. &lpar;转&rpar;Cobbler无人值守批量安装Linux系统

    本文目录: 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光 ...

  5. Linux系统性能测试工具(二)——内存压力测试工具memtester

    本文介绍关于Linux系统(适用于centos/ubuntu等)的内存压力测试工具-memtester.内存性能测试工具包括: 内存带宽测试工具——mbw: 内存压力测试工具——memtester: ...

  6. Linux系统性能测试工具(一)——内存带宽测试工具mbw

    本文介绍关于Linux系统(适用于centos/ubuntu等)的内存带宽测试工具-mbw.内存性能测试工具包括: 内存带宽测试工具——mbw: 内存压力测试工具——memtester: 内存综合性能 ...

  7. linux系统root用户忘记密码的重置方法

    如果不小心忘记了新安装的lCentOS7的root密码,现在将找回过程分享给大家. 1.首先,在启动grub菜单,选择编辑选项启动: 2.然后,按e 进入编辑模式: 3.将'linux 16'行'ro ...

  8. 批量修改Linux系统密码

    截取主机IP地址最后一位数.匹配一组定义好的自定义密码.使用chpasswd修改主机账户密码 截图主机IP [root@web01 ~]# ip addr 1: lo: <LOOPBACK,UP ...

  9. 2、Linux系统root用户忘记密码的重置方式

    .界面按空格暂停,按E .找到UTF-,在后面空格后输入init=/bin/sh 然后CHRL+X启动 .进入到这个界面,输入mount -o remount,rw / .输入passwd..然后输入 ...

随机推荐

  1. SQL&ast;Plus生成html文件

    最近使用SQL*Plus命令生成html文件,遇到一些有意思的知识点,顺便记录一下,方便以后需要的时候而这些知识点又忘记而捉急.好记性不如烂笔头吗! 为什么要用SQL*Plus生成html文件?   ...

  2. 安卓系统上安装&period;net运行时 mono runtime

    感谢以下博主: ubuntu指南 http://dawndiy.com/archives/229/ img大小调整 http://zebinj.blog.163.com/blog/static/206 ...

  3. sina发现并不会去导入qq使用的

    看问题需要多角度,为之不能实现也是有可能没有完善的.确实是由于短时间发布过多,还是bky好点好像有30S

  4. Catalan数推导(转载)

    Raney引理: 设整数序列A = {Ai, i=1, 2, …, N},且部分和Sk=A1+…+Ak,序列中所有的数字的和SN=1,在A的N个循环表示中,有且仅有一个序列B,满足B的任意部分和Si均 ...

  5. 语义Web和本体开发相关技术

    在技术实现方面,语义Web和本体理论的研究日趋成熟,已经有许多成熟的工具或程序接口,诸如Jena.OWL API等API是系统实现的关键技术.这里介绍系统的可行性分析以及系统开发设计的关键技术. 1 ...

  6. RouterOS&lpar;ROS&rpar;修改vrrp的mac地址

  7. 10491 - Cows and Cars

    描述:要么全选择牛,要么选择一辆车和p-1头牛,那么剩下n+m-p道门可以选择,求选择p道门以后要选择到车的概率 #include <cstdio> int main() { //freo ...

  8. Python进阶3---python类型注解、functools

    函数定义的弊端 函数注解Function Annotations 业务应用 inspect模块 #示例 import inspect def add(x,y:int,*args,**kwargs) - ...

  9. python3之枚举

    枚举 li = ['a','b','c','d'] for index,i in enumerate(li): #for index,i in enumerate(li,100): print(ind ...

  10. Web安全颜色

    Web安全色产生的原因 不同的平台(Mac.PC等)有不同的调色板,不同的浏览器也有自己的调色板.这就意味着对于一幅图,显示在Mac上的Web浏览器中的图像,与它在PC上相同浏览器中显示的效果可能差别 ...