python 自动创建vsftp
1 [root@js-93 vsftp_install]# cat install_vsftp.py 2 #!/usr/bin/env python3 3 #coding:utf-8 4 #install vsftp service 5 6 import os,sys,subprocess 7 import getpass 8 def install_vsftp(): 9 check_open = os.system('rpm -qa|grep openssh-server >/dev/null 2>&1') 10 check_vsftp = os.system('rpm -qa|grep vsftp >/dev/null 2>&1') 11 if check_open != 0 : 12 check_open_second = os.system('yum install openssh-server -y >/dev/null 2>&1') 13 if check_open_second != 0: 14 print('Error: install openssh-server faild ,please check your system') 15 else: 16 print('openssh-server install successful') 17 else: 18 print('openssh-server already installed') 19 if check_vsftp != 0: 20 check_vsftp_second = os.system('yum install vsftpd -y >/dev/null 2>&1') 21 if check_vsftp_second != 0: 22 print('Error: install vsftp faild, please check your system') 23 else: 24 print('vsftpd install successful!') 25 else: 26 print('vsftp already successful') 27 28 def create_vsftp_conf(): 29 conf_dict = { 30 'ftp_username':'nobody', 31 'anonymous_enable':'YES', 32 'local_enable':'YES', 33 'write_enable':'YES', 34 'local_umask':'022', 35 'dirmessage_enable':'YES', 36 'xferlog_enable':'YES', 37 'connect_from_port_20':'YES', 38 'xferlog_std_format':'YES', 39 'chroot_local_user':'NO', 40 'chroot_list_enable':'YES', 41 'chroot_list_file':'/etc/vsftpd/chroot_list', 42 'listen':'YES', 43 'pam_service_name':'vsftpd', 44 'userlist_enable':'YES', 45 'tcp_wrappers':'YES', 46 'anon_world_readable_only':'YES', 47 'pasv_enable':'YES', 48 'pasv_min_port':'10000', 49 'pasv_max_port':'10010'} 50 with open('/etc/vsftpd/vsftpd.conf','w') as conf_obj: 51 for key,val in conf_dict.items(): 52 line = key+"="+val 53 conf_obj.write(line) 54 conf_obj.write('\n') 55 56 57 def create_ftp_user(user,pwd,user_passwd): 58 res = subprocess.Popen(['ls -d %s' % pwd] ,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE, stderr=subprocess.PIPE) 59 stdout_val = res.stdout.read() 60 stderr_val = res.stderr.read() 61 if not stdout_val: 62 print('Warning: "%s" 目录不存在! '% pwd) 63 return 64 else: 65 if len(user) == 0 or len(user_passwd) == 0: 66 print('用户和密码不能为空') 67 return 68 else: 69 create_ftp_user = os.system('useradd -s /sbin/nologin -d %s %s' %(pwd,user)) 70 create_passwd = os.system('echo %s|passwd --stdin %s' %(user_passwd,user) ) 71 with open('/etc/vsftpd/chroot_list','a+') as chroot_list_obj: 72 chroot_list_obj.write(user) 73 chroot_list_obj.write('\n') 74 os.system('/etc/init.d/vsftpd restart') 75 76 def create_vsftp_user(user,pwd,user_passwd): 77 res = subprocess.Popen(['ls -d %s' % pwd] ,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE, stderr=subprocess.PIPE) 78 stdout_val = res.stdout.read() 79 if not stdout_val: 80 print('Warning: "%s" 目录不存在! '% pwd) 81 return 82 else: 83 if len(user) == 0 or len(user_passwd) == 0: 84 print('用户和密码不能为空') 85 return 86 else: 87 create_vsftp_user = os.system('useradd -d %s %s' %(pwd,user)) 88 create_passwd = os.system('echo %s|passwd --stdin %s' %(user_passwd,user) ) 89 with open('/etc/vsftpd/chroot_list','a+') as chroot_list_obj: 90 chroot_list_obj.write(user) 91 chroot_list_obj.write('\n') 92 os.system('/etc/init.d/vsftpd restart') 93 94 def del_user(user): 95 res = subprocess.Popen(['id %s' % user] ,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE, stderr=subprocess.PIPE) 96 stdout_val = res.stdout.read() 97 if len(stdout_val) == 0: 98 print('您删除的用户不存在') 99 else: 100 print(''' 101 删除用户时,将会删除该用户的Home目录,请确认是否删除 102 删除:yes 103 不删除:NO''') 104 inp = input("请输入您的选择:").strip() 105 if inp == 'yes': 106 print("即将删除用户 %s" % user) 107 os.system('userdel -r %s' % user) 108 else: 109 print("撤销删除用户") 110 return 111 112 if __name__ == '__main__': 113 while True: 114 print(''' 115 +++++++++++++++++++++++++ 116 请选择: + 117 1.新建vsftp服务器 + 118 2.创建ftp用户 + 119 3.创建vsftp用户 + 120 4.删除用户 + 121 5.退出 + 122 +++++++++++++++++++++++++''') 123 your_choice = input("请选择编号:").strip() 124 if your_choice == '1': 125 install_vsftp() 126 create_vsftp_conf() 127 continue 128 if your_choice == '2': 129 user = input('请输入用户名:').strip() 130 pwd = input('请输入 Home 目录:').strip() 131 user_passwd = getpass.getpass('请输入用户密码:') 132 create_ftp_user(user,pwd,user_passwd) 133 continue 134 if your_choice == '3': 135 user = input('请输入用户名:').strip() 136 pwd = input('请输入 Home 目录:').strip() 137 user_passwd = getpass.getpass('请输入用户密码:') 138 create_vsftp_user(user,pwd,user_passwd) 139 continue 140 if your_choice == '4': 141 user = input('请输入将要删除的用户名:').strip() 142 del_user(user) 143 if your_choice == '5': 144 print('欢迎下次使用') 145 break