设为首页 收藏本站
查看: 1545|回复: 0

[经验分享] 简单的FTP搜索-Python实现

[复制链接]

尚未签到

发表于 2016-6-8 12:06:11 | 显示全部楼层 |阅读模式
  动机:
  某日,在公司FTP上找东西,太原始了,没有搜索,翻了大半天,终于找到了,过后,就动手写了一段。
  没有建索引,只是根据关键字遍历所有文件名查找,用的时候才去查,也很原始 DSC0000.gif
代码如下:

#!/bin/usr/evn python
# -*- coding:utf-8 -*-
####################################
# --2009.11.23--
# --PM 1:00--
# --ActivePython 2.6.2.4--
# --by migle---pisoft--
####################################
### 搜索公司FTP服务器
####################################
import sys
import re
import ftplib
ERR_NOERR, ERR_PARAM, ERR_FTP = range(3)
def walk_ftp(ftp, cd = None, nodir = True):
if cd:
stack = [('d', cd)]
else:
stack = [('d', '/')]
def get_item_info(line):
info = line.split()
stack.append((info[0][0], '/'.join([pwd, info[8]])))
while stack:
s_top = stack.pop()
if s_top[1][-2:]=='/.' or s_top[1][-3:]=='/..':
continue
if s_top[0] == '-':
yield s_top[1].replace('//', '/')
elif s_top[0] == 'd':
try:
ftp.cwd(s_top[1])
except:
continue
pwd = ftp.pwd()
ftp.dir(get_item_info)
if not nodir:
yield s_top[1].replace('//', '/')
if __name__ == '__main__':
host = '服务器地址'
user = '用户名'
passwd = '密码'
for param in sys.argv[1:]:
key = param[:2]
value = param[3:]
if key == '-k':
pattern = value
else:
print "useage!!!"
print "-k关键字"
sys.exit(ERR_PARAM)
ftp = ftplib.FTP(host)
ftp.login(user, passwd)
print 'connected is success'
try:
for item in walk_ftp(ftp):
if re.search(pattern,item.split('/')[-1]):
print '找到:',item
except:
exitcode = ERR_FTP
else:
exitcode = ERR_NOERR
ftp.quit()
sys.exit(exitcode)

  以上代码保存为FTPSearcher.py
  运行:搜索文件名中包含"智能电网"的文件

D:\code\python>python FTPSearcher.py -k智能电网
  结果如下图所示
  
  
DSC0001.jpg
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-227860-1-1.html 上篇帖子: ftp断点继传 下篇帖子: Apache FTP Server配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表