`
longforfreedom
  • 浏览: 196962 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

简单的FTP搜索-Python实现

阅读更多

动机:

   某日,在公司FTP上找东西,太原始了,没有搜索,翻了大半天,终于找到了,过后,就动手写了一段。

没有建索引,只是根据关键字遍历所有文件名查找,用的时候才去查,也很原始 代码如下:

#!/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智能电网

 结果如下图所示

 


 

  • 大小: 24.9 KB
0
1
分享到:
评论

相关推荐

    Python灰帽子-黑客与逆向工程师的Python编程之道[简体中文版]

    中文名: Python灰帽子-黑客与逆向工程师的Python编程之道 原名: Gray Hat Python:Python Programming for Hackers and Reverse Engineers 作者:Justin Seitz 资源格式: PDF 版本: 扫描版 出版社: 电子工业出版社 ...

    文件传输服务(可搜索文件)python.zip

    用Python模拟的ftp服务器,实现了搜索和下载两个功能

    Python核心编程第二版

    很不错的python书 第1部分 Python核心  第1章 欢迎来到Python世界   1.1 什么是Python   1.2 起源   1.3 特点   1.3.1 高级   1.3.2 面向对象   1.3.3 可升级   1.3.4 可扩展   1.3.5 可...

    Python Cookbook

    3.14 用Python实现的简单加法器 133 3.15 检查信用卡校验和 136 3.16 查看汇率 137 第4章 Python技巧 139 引言 139 4.1 对象拷贝 140 4.2 通过列表推导构建列表 144 4.3 若列表中某元素存在则返回之 146 ...

    Python核心编程第二版(ok)

    Python核心编程第二版(ok) 第1部分 Python核心  第1章 欢迎来到Python世界   1.1 什么是Python   1.2 起源   1.3 特点   1.3.1 高级   1.3.2 面向对象   1.3.3 可升级   1.3.4 可扩展   ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    python入门到高级全栈工程师培训视频学习资料;本资料仅用于学习,请查看后24小时之内删除。 【课程内容】 第1章 01 计算机发展史 02 计算机系统 03 小结 04 数据的概念 05 进制转换 06 原码补码反码 07 物理层和...

    文件传输服务python_v3.1.zip

    用python来模拟FTP,实现了文件的上传,下载,搜索

    基于mediastreamer2的网络电话实现流程以及源码库

    于是首先开始在百度中搜索一下需要哪些东西,以及那些步骤。最后大致了解了一下,做这个项目最终要的就是需要移植好多的库,每一个库都需要配置,最后在交叉编译好动态库,然后在执行mediastreamer2的时候去调用这些...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    Socket实现简单的ssh服务端 积极思考正能量 Socket实现简单的ssh2 Socket粘包 Socket粘包深入编码 SocketServer SocketServer多并发 多用户在线Ftp程序 第9周 上节回顾 paramiko模块详解 ssh密钥讲解 进程与线程 ...

    利用Python如何批量更新服务器文件

    在网上搜索了一圈,发现Python有个库叫paramiko可以专门拿来干这个事,具体资料和安装就网上去搜索吧,我就直接上代码了,不到100行,其实还可以精简吧,后面再说了,先把功能实现了再说,Show Code 代码 import ...

    [搜索链接]FTP Web浏览搜索引擎(php) v1.1_ftpse-php.rar

    对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步...

    BB1407openwrt-RG100A_DB120-squashfs-cfe.bin

    命令执行完后,系统会在/tmp目录下创建个“中文转码测试”的文件,在终端中显示的会是乱码,不用担心,这不是表示系统不支持中文,你可以通过ftp或网上邻居来看看是不是能正常显示。 5、设置了配置文件中的...

Global site tag (gtag.js) - Google Analytics