Python创建、删除、查询vsftpd的虚拟用户(虚拟用户使用MySQL数据库)
来源:互联网 发布:aspnet源码怎么搭建 编辑:程序博客网 时间:2024/05/22 23:28
- 代码
- 测试
- 添加用户
- 删除用户
写在前面:
1. 初学python,使用python对vsftpd的虚拟用户进行增、删、查操作。
2. 小弟的英语比较菜,请忽略英语语法错误。^_^
3. 该程序主要练习MySQLdb、getpass模块的使用。需要安装MySQL-python软件包。
VSFTPD的使用,请参阅:http://blog.csdn.net/xrwwuming/article/details/51505857
代码
#!/usr/bin/env pyton# -*- coding: utf-8 -*-import MySQLdbimport getpassimport sysmysqlHost = 'localhost'mysqlUser = 'vsftp'mysqlPass = 'ftpvuser'mysqlDB = 'vsftp'mysqlTable = 'vuser'def connectDb(): global conn global cursor try: conn = MySQLdb.connect(host=mysqlHost, user=mysqlUser, passwd=mysqlPass, db=mysqlDB) cursor = conn.cursor() connectResult = True except: print 'Error: Can not connect to mysql database, please check it, Quit.' connectResult = False return connectResultdef checkUser(comm): cursor.execute(comm) rows = cursor.rowcount if rows != 0: result = True else: result = False return resultdef closes(): cursor.close() conn.close()def tips(): raw_input('Enter any key to continue? ')def userList(): comm = "select * from %s;" % mysqlTable cursor.execute(comm) rows = cursor.fetchall() print 'Current Users'.center(40,'=') for row in rows: print 'Username: %s' % (row[0]) print print 'Total User: %d' % (cursor.rowcount) print 'END'.center(40,'=')def add(): addUserResult = False if connectDb(): while not addUserResult: try: username = raw_input('Enter Username: ').strip() checkUserComm = "select * from %s where username = '%s';" % (mysqlTable, username) result = checkUser(checkUserComm) if len(username) == 0: print 'username can not empty , please try again...' elif result: print 'username %s is exist, please use other account, try again...' % (username) else: while not addUserResult: password = getpass.getpass('Enter Password: ') confirmPassword = getpass.getpass('Confirm Password: ') if len(password) == 0 or len(confirmPassword) == 0: print 'password or confirm password can not empty, please try again...' elif password != confirmPassword: print 'password is mismatch, please try again...' else: addUser = "insert into %s values ('%s',password('%s'));" % (mysqlTable, username, password) cursor.execute(addUser) conn.commit() if checkUser(checkUserComm): print print 'Add result'.center(40,'=') print 'Add user %s successful' % (username) print 'END'.center(40,'=') closes() addUserResult = True tips() else: print print 'Add result'.center(40,'=') print 'Add user %s failed, please try again...' print 'END'.center(40,'=') closes() addUserResult = True tips() except (KeyboardInterrupt, EOFError, SystemExit): print 'Quit Program' sys.exit() else: sys.exit()def delete(): deleteUserResult = False if connectDb(): userList() while not deleteUserResult: try: username = raw_input('Enter username you want to delete: ').strip() checkUserComm = "select * from %s where username = '%s';" % (mysqlTable, username) result = checkUser(checkUserComm) if len(username) == 0: print 'username can not empty, please try again...' elif not result: print 'username %s is not exist, please try again...' % (username) else: deleteUser = "delete from %s where username = '%s'" % (mysqlTable, username) cursor.execute(deleteUser) conn.commit() if not checkUser(checkUserComm): print print 'Delete result'.center(40,'=') print 'Delete user %s successful' % (username) print 'END'.center(40,'=') closes() deleteUserResult = True tips() else: print print 'Delete result'.center(40,'=') print 'Delete user %s failed, please try again...' print 'END'.center(40,'=') closes() deleteUserResult = True tips() except (KeyboardInterrupt, EOFError, SystemExit): print 'Quit Program' sys.exit() else: sys.exit()def show(): comm = "select * from %s;" % mysqlTable if connectDb(): userList() closes() tips()def showMenu(): select = 'adsq' menu='''=========== Menu ============ A)dd user D)elete user S)how all users Q)uit=============================Enter your choice: [A/D/S/Q]? ''' while True: try: choice = raw_input(menu).strip().lower()[0] except (KeyboardInterrupt, SystemExit, EOFError, IndexError): choice = 'q' if choice not in select: print print "Invalid Choice , please try again..." continue if choice == 'q': break return choiceif __name__ == '__main__': while True: choice = showMenu() if choice == 'a': add() elif choice == 'd': delete() elif choice == 's': show() else: print "Quit Program" break[root@control ~]#
测试
说明:
1. 添加用户时,程序会检测用户名是否为空,且不能是已经存在的用户。
2. 用户输入的密码不能为空,并且两次输入的密码必须要一致。
3. 密码使用password函数加密,存储在mysql数据库中。
4. 删除用户时,系统会将当前数据库中的用户显示出来,并且删除的用户不能为空,且必须是已经存在的。
添加用户
[root@control ~]# python vsftp_mysql_user_config.py =========== Menu ============ A)dd user D)elete user S)how all users Q)uit=============================Enter your choice: [A/D/S/Q]? s=============Current Users==============Username: ftp01Username: ftp02Total User: 2==================END===================Enter any key to continue? =========== Menu ============ A)dd user D)elete user S)how all users Q)uit=============================Enter your choice: [A/D/S/Q]? aEnter Username: ftp01username ftp01 is exist, please use other account, try again...Enter Username: ftp03Enter Password: Confirm Password: password is mismatch, please try again...Enter Password: Confirm Password: ===============Add result===============Add user ftp03 successful==================END===================Enter any key to continue? =========== Menu ============ A)dd user D)elete user S)how all users Q)uit=============================Enter your choice: [A/D/S/Q]? s=============Current Users==============Username: ftp01Username: ftp02Username: ftp03Total User: 3==================END===================Enter any key to continue? =========== Menu ============ A)dd user D)elete user S)how all users Q)uit=============================Enter your choice: [A/D/S/Q]? qQuit Program[root@control ~]#
删除用户
[root@control ~]# python vsftp_mysql_user_config.py =========== Menu ============ A)dd user D)elete user S)how all users Q)uit=============================Enter your choice: [A/D/S/Q]? d=============Current Users==============Username: ftp01Username: ftp02Username: ftp03Total User: 3==================END===================Enter username you want to delete: ftp04username ftp04 is not exist, please try again...Enter username you want to delete: ftp03=============Delete result==============Delete user ftp03 successful==================END===================Enter any key to continue? =========== Menu ============ A)dd user D)elete user S)how all users Q)uit=============================Enter your choice: [A/D/S/Q]? s=============Current Users==============Username: ftp01Username: ftp02Total User: 2==================END===================Enter any key to continue? =========== Menu ============ A)dd user D)elete user S)how all users Q)uit=============================Enter your choice: [A/D/S/Q]? qQuit Program[root@control ~]#
0 0
- Python创建、删除、查询vsftpd的虚拟用户(虚拟用户使用MySQL数据库)
- vsftpd 创建虚拟用户
- vsftpd下创建虚拟用户的方法
- vsftpd虚拟用户设置(mysql)
- 实现基于文件验证的vsftpd虚拟用户和基于MYSQL验证的vsftpd虚拟用户
- vsftpd服务的配置(虚拟用户)
- CENTOS5下VSFTPD的设置(虚拟用户分下载用户/下载、上传但不能删除用户/管理用户)
- CENTOS5下VSFTPD的设置(虚拟用户分下载用户/下载、上传但不能删除用户/管理用户)
- linux vsftpd 创建虚拟用户 过程记录
- linux vsftpd 创建虚拟用户 过程记录
- Vsftpd使用虚拟用户登录调用mysql验证
- vsftpd 建立虚拟用户
- VSFTPD虚拟用户配置
- Vsftpd虚拟用户设置
- vsFTPd添加虚拟用户
- Vsftpd虚拟用户设置
- vsftpd虚拟用户配置
- vsftpd虚拟用户配置
- jquery on 绑定所有元素(包括动态生成的)
- 237. Delete Node in a Linked List
- 线程间的数据共享
- ImageLoader的使用
- android 内存性能优化
- Python创建、删除、查询vsftpd的虚拟用户(虚拟用户使用MySQL数据库)
- C语言存储模式区别、near指针,far指针,huge指针
- Android 学习之AndroidMainfest.xml详解,必看,总结
- Git和Github的简单使用
- 从0使用webpack构建reactjs
- [Maven]4,依赖
- 2.3 高斯分布
- hive 使用
- assert()函数用法总结