[root@localhost vsftpd]# cat auto_createftp.py
#!/usr/bin/env python
#_*_coding:utf-8_*_
#date:20180502
#author:lihongxing import time,os,sys
from xpinyin import Pinyin
#import pypinyin
#from pypinyin import pinyin,lazy_pinyin '''
次脚本为自动创建ftp用户和密码,减少运维对ftp的操作,给xx部门使用。
当ftp根目录下有新的目录时,自动把目录转换成账户和密码
pinyin模块把汉字转换成拼音,用于ftp用户和密码
使用方式:
1:初次使用可以先建个管理员帐号,指到ftp根目录
2:使用管理员帐号在根目录加目录即可,然后此脚本自动创建用户指到该目录
'''
if sys.getdefaultencoding() != 'utf-8':
reload(sys)
sys.setdefaultencoding('utf-8') p = Pinyin() dir_path_info = 'ls /DATA/rocen-ftp/'
dir_ret = os.popen(dir_path_info)
ls_ret = dir_ret.read()
ret = ls_ret.strip(" ").split("\n")
ret.append("新文件夹") while True:
new_dir_path_info = 'ls /DATA/rocen-ftp/'
new_dir_ret = os.popen(new_dir_path_info)
new_ls_ret = new_dir_ret.read()
new_ret = new_ls_ret.strip(" ").split("\n")
different_list = list(set(new_ret).difference(set(ret)))
#print "ret:",ret,"new_ret:",new_ret
if len(different_list) >0:
ulist = []
for i in different_list:
dir_name_path = "/DATA/rocen-ftp/%s"%(i)
if os.path.isdir(dir_name_path):
l =i.decode("utf-8")
ulist.append(l)
ret.append(i)
for dir_name in ulist:
C_to_E = p.get_pinyin(dir_name,splitter='')
#print C_to_E pam_path = './vuser_conf/' + C_to_E
pam_file = open(pam_path,'w+')
pam_text_info = '''local_root=%s
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES''' %(dir_name_path)
pam_file.write(pam_text_info+"\n")
pam_file.close() f_passwd = open('vuser_passwd','a')
f_passwd.write(C_to_E + "\n" + C_to_E+"" + "\n")
f_passwd.flush()
f_passwd.close
os.system('db_load -T -t hash -f vuser_passwd vuser_passwd.db')
print"成功创建ftp账户%s和认证文件"%(C_to_E)
os.system("chmod 777 -R %s" %(dir_name_path))
os.system("service vsftpd restart")
os.system('db_load -T -t hash -f vuser_passwd vuser_passwd.db')
os.system("service vsftpd restart")
time.sleep(5)

最新文章

  1. ASP.NET性能优化之减少请求
  2. c++ iterator(迭代器)分类及其使用
  3. Tomcat6.0+Jdk1.5+Axis1.3搭建java webservice环境,并使用c#调用该服务。
  4. USACO 08-Nov( 最小生成树)
  5. Azure IOT (EventHub + Stream Analytics + Table Storage)的使用
  6. 三分钟部署Laxcus大数据管理系统
  7. POJ_3258_River_Hopscotch_[NOIP2015]_(二分,最大化最小值)
  8. 菜单类(CCMenu,CCMenuItem)
  9. 解决SurfaceView设置透明造成覆盖其他组件的替代方案
  10. BZOJ 2463: [中山市选2009]谁能赢呢?(博弈论)
  11. WebBrowser keystroke
  12. 理解ActivityManagerService
  13. 注册测绘师20180301-CNSS
  14. contos7搭建syslog服务端与客户端
  15. 无符号1byte转int
  16. Forth 输入流处理
  17. sqlserver 日志查询
  18. Fiddler 4 界面功能介绍
  19. iOS-一个弹出菜单动画视图开源项目分享
  20. zzuli 1430 多少个0

热门文章

  1. Unity事件系统EventSystem简析
  2. Vue 组件复用性和slot
  3. Python赋值没有返回值+笔试
  4. Isx个人第4次作业—Alpha项目测试
  5. 深入Java类加载全流程,值得你收藏
  6. Linux(Centos)安装tomcat并且部署Java Web项目
  7. 【WPF学习】第三十六章 样式基础
  8. Linux 误删catlina.out导致磁盘空间爆满,无法查询到大文件解决办法
  9. Unreal Engine 4 蓝图完全学习教程(二)—— 初步尝试
  10. SpringBoot图文教程「概念+案例 思维导图」「基础篇上」