批量增加Linux系统账号、重置账号密码、FTP账号批量测试
批量增加Linux系统账号、重置账号密码是用Linux Shell脚本来做的;批量FTP账号测试是用Python脚本来做的。这些脚本都是读取一个用户名和密码文件,然后基于该用户名密码文件进行自动批量测试。
这些脚本并没有多少技术含量,只是初次写起来需要调试耗费一点时间,希望能给需要的人节省时间,避免不必要的加班 ^_^
用户名密码文件格式如下:
每一行都是用户名和密码,用户名和密码之间用空格或者TAB制表符分割。
批量增加系统账号
- #!/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账号批量测试的更多相关文章
- shell实现增加删除Linux系统用户脚本(密码为随机)
README shell环境下运行脚本,根据需求选择相应的功能. List \t\t create the userlist 这一步是必须执行的,脚本会识别本地当前目录下的文件 Useradd \t\ ...
- Linux系统root用户忘记密码解决方法
一:在linux系统启动时(如下图),按e键 二:进入到设置页面,定位到如下行: 三:按e键,进入输入界面 四:在编辑行最后面,空格,输入single,回车后回到第二步界面,只是后面多了single ...
- Windows和Linux下Mysql 重置root 密码
Windows系统下一:进入Windows窗口cmd命令行下,停止mysql服务: net stop mysql二:进入mysql的安装目录下,进去bin目录mysqld-nt.exe --skip- ...
- (转)Cobbler无人值守批量安装Linux系统
本文目录: 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光 ...
- Linux系统性能测试工具(二)——内存压力测试工具memtester
本文介绍关于Linux系统(适用于centos/ubuntu等)的内存压力测试工具-memtester.内存性能测试工具包括: 内存带宽测试工具——mbw: 内存压力测试工具——memtester: ...
- Linux系统性能测试工具(一)——内存带宽测试工具mbw
本文介绍关于Linux系统(适用于centos/ubuntu等)的内存带宽测试工具-mbw.内存性能测试工具包括: 内存带宽测试工具——mbw: 内存压力测试工具——memtester: 内存综合性能 ...
- linux系统root用户忘记密码的重置方法
如果不小心忘记了新安装的lCentOS7的root密码,现在将找回过程分享给大家. 1.首先,在启动grub菜单,选择编辑选项启动: 2.然后,按e 进入编辑模式: 3.将'linux 16'行'ro ...
- 批量修改Linux系统密码
截取主机IP地址最后一位数.匹配一组定义好的自定义密码.使用chpasswd修改主机账户密码 截图主机IP [root@web01 ~]# ip addr 1: lo: <LOOPBACK,UP ...
- 2、Linux系统root用户忘记密码的重置方式
.界面按空格暂停,按E .找到UTF-,在后面空格后输入init=/bin/sh 然后CHRL+X启动 .进入到这个界面,输入mount -o remount,rw / .输入passwd..然后输入 ...
随机推荐
- PAT甲题题解-1110. Complete Binary Tree (25)-(判断是否为完全二叉树)
题意:判断一个节点为n的二叉树是否为完全二叉树.Yes输出完全二叉树的最后一个节点,No输出根节点. 建树,然后分别将该树与节点树为n的二叉树相比较,统计对应的节点个数,如果为n,则为完全二叉树,否则 ...
- PAT甲题题解-1126. Eulerian Path (25)-欧拉回路+并查集判断图的连通性
题目已经告诉如何判断欧拉回路了,剩下的有一点要注意,可能图本身并不连通. 所以这里用并查集来判断图的联通性. #include <iostream> #include <cstdio ...
- PAT-1001 采花生
题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”. 鲁宾逊先生和多多都很开心,因为花生正是他 ...
- js分页实例
js分页实例 案例1 1.js_pageusers.html <!DOCTYPE html> <html> <head> <title>js_pageu ...
- windows日志查看-非法关机判断方法
日志文件,它记录着Windows系统及其各种服务运行的每个细节,对增强Windows的稳定和安全性,起着非常重要的作用.但许多用户不注意对它保护,一些“不速之客”很轻易就将日志文件清空,给系统带来严重 ...
- 一条sql语句搞定基于mysql的sql执行顺序的基本理解
对数据库基本操作是每个程序员基本功,如何理解并快速记住sql执行的顺序呢,其实一条复杂的sql就能搞定: SELECT DISTINCT <select_list> FROM <le ...
- 微信小程序初窥-环境搭建
关于微信小程序的背景知识,在此不做阐述,可以自行搜索了解.本文将介绍微信小程序的账号的注册,IDE的下载,创建一个实例小程序. 1.注册小程序 前去链接:https://mp.weixin.qq.co ...
- Jenkins之自动构建
修改job的配置: Build periodically:不管版本是否修改,都会执行: Poll SCM:只有当版本有修改才会执行.
- 一本通1625【例 1】反素数 Antiprime
反素数 Antiprime 题目描述 原题来自:POI 2001 如果一个大于等于 1 的正整数 n,满足所有小于 n 且大于等于 1 的所有正整数的约数个数都小于 n 的约数个数,则 n 是一个反素 ...
- JSP 获取真实IP地址的代码
[转载]JSP 获取真实IP地址的代码 JSP 获取真实IP地址的代码 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的. ...