`

OS + Linux Ftp sftp / vsftp / wu-ftp / proftp / gssftp / tftp / tftpfer / lftp

    博客分类:
  • OS
阅读更多

 

Linux / Unix系统 umask 命令

http://www.ixpub.net/thread-1031627-1-1.html

A 什么是umask?
当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。
你的系统管理员必须要为你设置一个合理的 umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。在已经登录之后,可以按照个人的偏好使用umask命 令来改变文件创建的缺省权限。相应的改变直到退出该shell或使用另外的umask命令之前一直有效。一般来说,umask命令是在/etc /profile文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久 性地设置自己的umask值,那么就把它放在自己$HOME目录下的.profile或.bash_profile文件中。
B 如何计算umask值
umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最 大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来 说,umask中各个数字最大可以到7。
该命令的一般形式为:
umask nnn
其中nnn为umask置000-777。
让我们来看一些例子。
计算出你的umask值:
可以有几种计算umask值的方法,通过设置umask值,可以为新创建的文件和目录设置缺省权限。下表列出了与权限位相对应的umask值。
在计算umask值时,可以针对各类用户分别在这张表中按照所需要的文件/目录创建缺省权限查找对应的umask值。
例如,umask值002 所对应的文件和目录创建缺省权限分别为6 6 4和7 7 5。
还有另外一种计算umask值的方法。我们只要记住umask是从权限中“拿走”相应的位即可。
umask值与权限
umask 文件 目录
0 6 7
1 6 6
2 4 5
3 4 4
4 2 3
5 2 2
6 0 1
7 0 0
例如,对于umask值0 0 2,相应的文件和目录缺省创建权限是什么呢?
第一步,我们首先写下具有全部权限的模式,即777 (所有用户都具有读、写和执行权限)。
第二步,在下面一行按照umask值写下相应的位,在本例中是0 0 2。
第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。
稍加练习就能够记住这种方法。
第四步,对于文件来说,在创建时不能具有文件权限,只要拿掉相应的执行权限比特即可。
这就是上面的例子, 其中u m a s k值为0 0 2:
1) 文件的最大权限 rwx rwx rwx (777)
2) umask值为0 0 2 --- --- -w-
3) 目录权限 rwx rwx r-x (775) 这就是目录创建缺省权限
4) 文件权限 rw- rw- r-- (664) 这就是文件创建缺省权限
下面是另外一个例子,假设这次u m a s k值为0 2 2:
1) 文件的最大权限 rwx rwx rwx (777)
2 ) u m a s k值为0 2 2 --- -w- -w-
3) 目录权限 rwx r-x r-x (755) 这就是目录创建缺省权限
4) 文件权限 rw- r-- r-- (644) 这就是文件创建缺省权限
C 常用的umask值
下表列出了一些umask值及它们所对应的目录和文件权限。
常用的umask值及对应的文件和目录权限
umask 值 目录 文件
0 22 7 5 5 6 4 4
0 27 7 5 0 6 4 0
0 02 7 7 5 6 6 4
0 06 7 7 1 6 6 0
0 07 7 7 0 6 6 0
D umask命令
如果想知道当前的umask 值,可以使用umask命令:
$umask
如果想要改变umask值,只要使用umask命令设置一个新的值即可:
$ umask 002
确认一下系统是否已经接受了新的u m a s k值:
$umask
002
$touch testfile
$ls -l testfile
rw- rw- r--
在使用umask命令之前一定要弄清楚到底希望具有什么样的文件/目录创建缺省权限。否则可能会得到一些非常奇怪的结果;例如,如果将umask值设置为6 0 0,那么所创建的文件/目录的缺省权限就是0 6 6!

linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)

http://blog.chinaunix.net/space.php?uid=20406434&do=blog&id=2947718

FTP的ASCII和Binary两种传输方式有何不同

http://bbs.wps.cn/viewthread.php?tid=21819571

http://blog.chinaunix.net/u2/80598/showart_1220654.html

ASCII模式和Binary模式的区别是回车换行的处理,Binary模式不对数据进行任何处理,ASCII模式将回车换行转换为本机的回车字符,比如:UNIX下是\n,Windows下是\r\n,Mac下是\r。

ASCII模式下会转换文件,不能说是不同系统对回车换行解释不同,而是不同的系统有不同的行结束符。UNIX系统下行结束符是一个字节,即十六进制的 0A,而Windows的系统是两个字节,即十六进制的0D0A,所以当你用ASCII方式从UNIX的FTP Server下载文件到Windows系统上时(不管是二进制或者文本文件),每检测到一个字节是0A,就会自动插入一个0D,所以如果你的文件是二进制 文件,比如可执行文件、压缩包什么的,就肯定不能用了。如果你的文件就是UNIX下的文本文件,你用ASCII模式是正确的,要是误用了Binary模 式,你在Windows上看这个文件是没有换行的,里面是一个个的黑方块。

一般来说,我们最好都用Binary方式,这样可以保证不出错。如果有文本格式转换的问题,即UNIX格式的文本和DOS格式的文本之间的转换,有很多工具可以做的,不要在ftp传输的时候冒险,尤其是你如果对这些东西不是非常清楚的话。

如何设置FTP的传输方式呢? 在ftp>提示符下输入ascii即转换到ACSII方式,输入bin,即转换到Binary方式

ftp> bin

200 Switching to Binary mode.

ftp> ascii

200 Switching to ASCII mode.

gssftp ( redhat 5.4 default )

1.1、用root用户登录,进入终端命令模式;
1.2、开启gssftp服务。
  cd /etc/xinetd.d ,编辑ftp服务的配置文件gssftp的设置:
  开启ftp服务设置.
  vi gssftp ,将 修改两项内容:
  (1)server_args = -l –a 去掉-a 改为server_args = -l
  (2)disable=yes改为disable=no
  (3)保存退出。

1.3、激活服务:

ftp 是挂在 xinetd 底下的,所以自然只要重新激活 xinetd 就能够将 xinetd 里头的设定重新读进来

激活目录和命令:
  cd /etc/rc.d/init.d/
  service xinetd restart
  有时会提示命令不存在,需要加上命令的路径
  [root@localhost init.d]# service xinetd resart
  bash: service: command not found
  [root@localhost init.d]# /sbin/service xinetd restart
  重新启动FTP、Telnet服务 service vsftpd start
  说明,如果主机设置了DNS时,不知道为什么FTP连接时有点慢,当连上去以后就正常,如果去掉DNS好像就没有这个问题。

linux xinetd 服务不能启动:

[root@lindows init.d]# /sbin/service xinetd status
xinetd: unrecognized service

[root@lindows init.d]# yum -y install xinetd
Loading "rhnplugin" plugin
Loading "security" plugin
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Parsing package install arguments
No package xinetd available.
Nothing to do

[root@lindows Server]# pwd
/media/RHEL_5.4 i386 DVD/Server

[root@lindows Server]# rpm -ivh xinetd-2.3.14-10.el5.i386.rpm
warning: xinetd-2.3.14-10.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:xinetd ########################################### [100%]
[root@lindows Server]# rpm -qa | grep xinetd
xinetd-2.3.14-10.el5

[root@localhost Server]# /sbin/service xinetd restart
Stopping xinetd: [FAILED]
Starting xinetd: [ OK ]
[root@localhost Server]# /sbin/service xinetd restart

Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]

vsftp ftp://anonymous:null@172.17.25.235

8.3.2 VSFTP的安装与配置(1)

http://book.51cto.com/art/200912/167861.htm

http://www.hac-maarssen.nl/download/vsftpd_FTPS_Setup_RHEL5.pdf

Vsftpd完全攻略

http://viong.blog.51cto.com/844766/261291

一.ftp原理与vsftpd安装

二.设置匿名用户也支持下载和上传,创建目录

三.基于系统用户支持ftp上传和访问

四.搭建支持SSL加密传输的vftpd

五.vsftpd.conf配置详解

六.建立多个虚拟用户支持ftp不同访问权限

七.利用quota对Vsftpd做磁盘配额

vsftp.conf配置详解

http://doc.linuxpk.com/5831.html

样张阅读下载:r

http://bbs.chinaunix.net/viewthread.php?tid=1625884
全书目录:《循序渐进Linux》详细目录结构.rar (232.77 KB)
第一章:Linux学习方法论.rar (738.36 KB)
第二章:第二章 Linux系统安装与基本配置.rar (1.39 MB)
第三章:第三章系统基本结构.rar (593.73 KB)
第四章:第四章:linux下常用命令及其使用详解.rar (1.22 MB)
第五章:Linux下软件包的安装与管理.rar (400.41 KB)
第八章:架设Linux服务器.rar (920.83 KB)

《循序渐进Linux》详细目录结构

http://blog.chinaunix.net/u/8811/showart_2114977.html

http://dl.iteye.com/topics/download/3a5405a0-858d-38d4-924a-7d8d658e9b08

ftp运行的两种模式——xinetd运行模式和 standalone模式

http://www.diybl.com/course/6_system/linux/Linuxjs/2008617/125927.html#

1.xinetd运行模式大多数较新的系统采用的是xinetd超级服务守护进程。使用“vi /etc/xinetd.d/vsftpd” 看一下它的内容,如下:disable = nosocket_type = streamwait = no# 这表示设备是激活的,它正在使用标准的TCP Sockets。

如果“/etc/vsftpd.conf”中的有选项为“listen=YES”,注销它最后,重启xinetd,命令如下:$ /etc/rc.d/init.d/xinetd restart需要注意的是,“/etc/xinetd.d”目录中仅能开启一个FTP服务。

2.standalone模式  standalone模式便于实现PAM验证功能。进入这种模式首先要关闭xinetd下的vsftpd,设置“disable = yes”,或者注销掉“/etc/inetd.conf”中相应的行。然后修改“/etc/vsftpd.conf”中的选项为“listen=YES”。

Linux 下挂载和卸载FTP服务器

http://lym6520.iteye.com/blog/478431

linux挂载ftp服务器可以通过sudo mount命令来加载FTP服务器:

方式一:包含密码
#sudo mount //ip/FTPServer /FTPServer -o username=admin,password=123456 -t cifs
方式二:密码单独输入

#sudo mount //ip/FTPServer /FTPServer -o username=admin -t cifs
#password:123456

卸载命令:
#umount FTPServer

LINUX下让一个用户添加进多个组中

http://hi.baidu.com/windox/blog/item/01757ccb0468901fbe09e68a.html

http://www.5dlinux.com/article/1/2008/linux_13251_2.html?

http://www.linuxsir.org/bbs/thread170912-2.html

http://www.iteye.com/topic/340655

http://www.vsftpdrocks.org/source/

http://taink.iteye.com/blog/492984?
http://lianj-lee.iteye.com/blog/519027
http://server.csdn.net/n/20090805/3901.html
http://os.51cto.com/art/200901/106622.htm
ftp://vsftpd.beasts.org/users/cevans/
http://hi.baidu.com/naruto6006/blog/item/932f355445d60dc2b745ae93.html

在配置vsftp中出现过的问题

http://hapig.blog.51cto.com/205559/87446

VSFTPD 服务器安装配置

http://doc.itchinese.com/linux/debian/vsftpd/index.html

vsftpd 在redhat as 4.0下安装碰到的问题

http://javago-net.iteye.com/blog/490946

RedHat Enterprise Linux5 上安装vsftp

http://bevisoft.iteye.com/blog/423751

在Fedora上安装及配置vsftp服务器

http://blog.csdn.net/guoguo1980/archive/2008/04/17/2299075.aspx?

vsftpd

http://viong.blog.51cto.com/844766/261291

一.ftp原理与vsftpd安装
二.设置匿名用户也支持下载和上传,创建目录
三.基于系统用户支持ftp上传和访问
四.搭建支持SSL加密传输的vftpd
五.vsftpd.conf配置详解
六.建立多个虚拟用户支持ftp不同访问权限
七.利用quota对Vsftpd做磁盘配额

vsftpd faq

vsftpd官方faq翻译(中文版)+常见FTP错误代码_羽飞_新浪博客

http://blog.sina.com.cn/s/blog_4fed8bc50100e63d.html###

官方faq地址:

ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-2.0.3/FAQ

Linux中FTP常见命令及问题

http://pingzhicao.blog.sohu.com/73739523.html

vsftp 配置以及日志格式

http://www.unix-center.net/bbs/viewthread.php?tid=750


FTP服务中常见有vsftp,proftp,wu-ftp...而在类redhat的linux发行版本中vsftp一般都是默认安装的,下面我们就来介绍下vsftp的配置以及它的日志格式。

1问题描述
昨天刚向实验室的同学公开一个movie帐户,其实是想大家都能telnet,或ssh上,有空玩玩。没想到有人就用这个帐号在ftp上删除了文件。
首先vsftp默认只有上下传记录,根本没有本地用户的删除或建目录的操做。这个在lastlog里也不会有痕迹。所以对公开账号千万不能同时是本地账 号。如果是本地账号,那也要控制该账号确定文件的删除修改权限。不要让该用户对其他文件有破坏性权限。这种控制会积累很多管理漏洞,所以最好就是给虚拟用 户,或者ftp只能使用匿名账号(当然,这个管理员可以灵活控制自己的使用权限)。
因此在开放用户账号时要考虑日志的决定存在,不能出现这种漏空监控。
出现这种问题的关键就是日志与服务没有绝对一致。比如ftp本来只是用来上传或下载,这里却还给了管理文件的权限,而vsftp对管理文件的却没有监控,太失败了。

2 相关知识
查阅vsftp的参数手册才知道是自己太无知。
vsftpd与log有关的选项:
vsftpd_log_file
xferlog_enable
xferlog_std_format
xferlog_file
dual_log_enable
syslog_enable
log_ftp_protocol
no_log_lock
这里主要要到下面几个参数控制
log_ftp_protocol
如果启用, 假若选项 xferlog_std_format 没有启用, 所有的 FTP 请求和应答都会被记录. 此选项将对调试很有用.
默认: YES
dual_log_enable
如果启用, 将生成两个相似的日志文件, 默认在 /var/log/xferlog 和 /var/log/vsftpd.log 目录下. 前者是 wu-ftpd 类型的传输日志, 可以用于 标准工具分析. 后者是 vsftpd 自己类型的日志.
xferlog_enable
如果启用, 将会维护一个日志文件, 用于详细记录上载和下载. 默认情况下, 这个日志文件是 /var/log/vsftpd.log. 但是也可以通过配置文件中的 vsftpd_log_file 选项来指定.
默认: NO(但是在示例设置中启用了这个选项)
xferlog_std_format
如果启用, 传输日志文件将以标准 xferlog 的格式书写, 如同 wu-ftpd 一样. 这可以用于重新使用传输统计生成器. 然而, 默认格式更注重可读性. 此格式的日志文件默认为 /var/log/xferlog, 但是您也可以通过 xferlog_file 选项来设定.
默认: NO

开启vsftp debug 打印详细日志模式

[root@wcs7sitweb ~]# vim /etc/vsftpd/vsftpd.conf

#xferlog_std_format  (注释本行standard format即可)
[root@wcs7sitweb ~]# service vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]
[root@wcs7sitweb ~]# tail -f /var/log/vsftpd.log

Wed Aug 17 20:28:45 2011 [pid 19511] CONNECT: Client "10.21.170.91"
Wed Aug 17 20:28:50 2011 [pid 19510] [ftpuser] OK LOGIN: Client "10.21.170.91"
Wed Aug 17 20:28:55 2011 [pid 19512] [ftpuser] OK MKDIR: Client "10.21.170.91", "/opt/SNWCS/WC_EMALL.ear/Stores.war/ConsumerDirectStorefrontAssetStore/lindows"
Wed Aug 17 20:29:02 2011 [pid 19512] [ftpuser] OK RMDIR: Client "10.21.170.91", "/opt/SNWCS/WC_EMALL.ear/Stores.war/ConsumerDirectStorefrontAssetStore/lindows"
3 解决方法
这里只给出日志这块的参数设置
##################log settings###################
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/xferlog
#
#log in two files /var/log/xferlog and /var/log/vsftpd.log
dual_log_enable=YES

# If you want, you can have your log file in standard ftpd xferlog format

##xferlog_std_format=YES
vsftpd_log_file=/var/log/vsftpd.log
#log time setting
use_localtime=YES
#
###################end of log####################
4 结果
Xferlog内容如下
---------------------------------------------------------------------------------------------------------------------
Wed Apr 18 06:41:29 2007 1 202.116.130.248 0 /pub/upload/kernel.rpm b _ i a root ftp 0 * i
Wed Apr 18 06:43:27 2007 1 202.116.130.248 0 /pub/sun b _ o a root ftp 0 * c
Tue May 1 15:03:37 2007 1 202.116.130.242 45662 /mnt/d/movie/linux partition.JPG b _ i r movie ftp 0 * c
Vsftpd.log内容如下
----------------------------------------------------------------------------------------------------------------------
Tue May 1 15:03:21 2007 [pid 23969] CONNECT: Client "202.116.130.242"
Tue May 1 15:03:21 2007 [pid 23968] [movie] OK LOGIN: Client "202.116.130.242"
Tue May 1 15:03:37 2007 [pid 23970] [movie] OK UPLOAD: Client "202.116.130.242", "/mnt/d/movie/linux partition.JPG", 45662 bytes, 824.60Kbyte/sec
Tue May 1 15:05:12 2007 [pid 23970] [movie] OK DELETE: Client "202.116.130.242", "/mnt/d/movie/linux partition.JPG"
这样xferlog则专门记录上下传信息,对ftp而言,这些信息是有绝对统计意义的。而系统管理员,有时为了满足不同用户的需求,可能会开发一些特殊的账号,怎么以ftp登录从系统的角度来管理监控,vsftpd.log就可以详细供证了。
不过,我还是建议服务的专一性,这样才能减轻管理负担。
对于日志的分析----eagerlinuxer 《用AWStats对VSFTP日志进行统计》。先看这个图,估计你就有动力去做了。http://awstats.sourceforge.net/awstats.ftp.html
如果没有特别要求,可以用sed和awk结合使用,比如
sed -n '/[a]{1} _ {1}/p' xferlog过滤结果后再针对ip过滤等,熟练使用sed,awk可以对数据进行很多有用的处理和分析。
参考
1etony vsftpd.conf 联机手册 http://fanqiang.chinaunix.net/app/ftp/2005-06-24/3337.shtml
2wolfg vsftpd日志(xferlog格式)的含义http://www.chinaunix.net/jh/15/698727.html
3man vsftpd.conf----推荐
4eagerlinuxer 《用AWStats对VSFTP日志进行统计》http://www.chinaunix.net/jh/15/388056.html
当同时对一个目录或文件有多种服务控制时,就要考虑服务之间的权限复核,即是一种服务的权限对于同一账号不能有不同访问权限。首先目录或文件的自身权限是权限控制的基础,其次不同服务自身还可以加载访问权限(一般相对原始权限提高)。
******************************************************************
vsftpd.conf http://vsftpd.beasts.org/vsftpd_conf.html
vsftpd日志格式XFERLOG(5) http://bsdftpd-ssl.sc.ru/doc/unix/xferlog.5.txt

-- 查询vsftpd详细信息

[lindows@lindows /]$ rpm -qi vsftpd
Name : vsftpd Relocations: (not relocatable)
Version : 2.0.5 Vendor: Red Hat, Inc.
Release : 12.el5 Build Date: 2007年12月13日 星期四 19时35分37秒
Install Date: 2009年10月11日 星期日 00时06分56秒 Build Host: ls20-bc1-14.build.redhat.com
Group : System Environment/Daemons Source RPM: vsftpd-2.0.5-12.el5.src.rpm
Size : 289673 License: GPL
Signature : DSA/SHA1, 2007年12月17日 星期一 23时43分34秒, Key ID 5326810137017186
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL : http://vsftpd.beasts.org/
Summary : vsftpd - 非常安全 Ftp 守护进程
Description :vsftpd 是一个非常安全 FTP 守护进程。它是完全从零开始编写的。

-- 查询vsftpd包含文件列表

[lindows@lindows /]$ rpm -ql vsftpd

/etc/logrotate.d/vsftpd.log vsftpd的日志文件

/etc/pam.d/vsftpd PAM认证文件

/etc/rc.d/init.d/vsftpd 启动脚本

/etc/vsftpd vsftpd的配置文件存放的目录

/etc/vsftpd/ftpusers 禁止使用vsftpd的用户列表文件

/etc/vsftpd/user_list 禁止或允许使用vsftpd的用户列表文件

/etc/vsftpd/vsftpd.conf 主配置文件

/etc/vsftpd/vsftpd_conf_migrate.sh vsftpd操作的一些变量和设置

/usr/sbin/vsftpd vsftpd的主程序其他一些说明文档和手册文件略!

/var/ftp 匿名用户主目录

/var/ftp/pub 匿名用户的下载目录

-- 添加vsftpd系统自动启动

[root@localhost ~]# chkconfig --level 3 vsftpd on 打开3级别随系统自动启动vsftpd

--切换root启动vsftpd服务
[lindows@localhost ~]/sbin/service vsftpd status
vsftpd 已停
[lindows@localhost ~]/sbin/service vsftpd rstart
关闭 vsftpd: [失败]
为vsftpd 启动 vsftpd: 500 OOPS:cannot open config file:/etc/vsftpd/vsftpd.conf [失败]
[lindows@localhost ~]su -
口令:
[root@localhost ~]/sbin/service vsftpd status
vsftpd 已停
[root@localhost ~]/sbin/service vsftpd rstart
关闭 vsftpd: [失败]
为 vsftpd启动 vsftpd: [确定]
[root@localhost ~]/sbin/service vsftpd rstart
关闭 vsftpd: [确定]
为 vsftpd启动 vsftpd: [确定]
--添加用户属主和属组
[root@localhost ~]useradd ftp1 -g ftp1 -d /usr/usrftp/ -s /sbin/nologin
[root@localhost ~]useradd ftp2 -g ftp2 -d /usr/usrftp/read -s /sbin/nologin
[root@localhost ~]useradd ftp3 -g ftp3 -d /usr/usrftp/reader -s /sbin/nologin
--查看用户属主和属组
[root@localhost ~]groups ftp1
ftp1 : ftp1
[root@localhost ~]groups ftp2
ftp2 : ftp2
[root@localhost ~]groups ftp3
ftp3 : ftp3

[root@localhost ~]id ftp1
uid=501(ftp1) gid=504(g1) groups=504(g1)
[root@localhost ~]id ftp2
uid=502(ftp2) gid=505(g2) groups=505(g2)
[root@localhost ~]id ftp3
uid=503(ftp3) gid=506(g3) groups=506(g3)
--改变用户所属组
[root@localhost ~]groupadd g1
[root@localhost ~]groupadd g2
[root@localhost ~]groupadd g3
[root@localhost ~]usermod -g g1 ftp1
[root@localhost ~]usermod -g g1 ftp2
[root@localhost ~]usermod -g g1 ftp3
[root@localhost ~]groupdel ftp1
[root@localhost ~]groupdel ftp2
[root@localhost ~]groupdel ftp3
--改变文件夹属主和属组
[root@localhost ~]chown -R ftp1:g1 /usr/ustftp
--添加vsftpd登陆用户ftp1、ftp2、ftp3默认分别为自身home目录
[root@localhost ~]cat /etc/passwd
#查看是否锁定登陆用户在其home目录
ftp1:x:518:521::/usr/usrftp/:/sbin/nologin
ftp2:x:519:522::/usr/usrftp/read:/sbin/nologin
ftp3:x:520:523::/usr/usrftp/reader:/sbin/nologin
[root@localhost ~]vi /etc/vsftpd/chroot_list
#输入用户名,一行一个。
#http://zhidao.baidu.com/question/89902462.html
#修改内容:
ftp1
ftp2
ftp3
[root@localhost ~]cp /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf.bak
[root@localhost ~]vi /etc/vsftpd/vsftpd.conf
#修改内容:
chroot_local_user = YES
chroot_list_file=/etc/vsftpd.chroot_list
[root@localhost ~]/sbin/service vsftpd restart
LINUX下让一个用户添加进多个组中
http://hi.baidu.com/windox/blog/item/01757ccb0468901fbe09e68a.html

--修改了vsftpd.conf >>> chroo_list_enable=YES
--禁止跳转上层目录
C:\Documents and Settings\lindows>ftp 192.168.121.122
Connected to 192.168.121.122.
220 (vsFTPd 2.0.5)
User (192.168.121.122:(none)): bizftp122
331 Please specify the password.
Password:
500 OOPS: could not open chroot() list file:/etc/vsftpd/chroot_list
500 OOPS: priv_sock_get_result
Connection closed by remote host.
--再修改文件chroot_list
bizftp122
ftpuser
--搞定

--禁止root 帐户登录

[root@localhost ~]cd /etc/vsftpd

[root@localhost vsftpd] vi user_list

#去掉root注释,还原禁止列表

[root@localhost vsftpd] vi ftpusers

#去掉root注释,还原禁止列表

在配置vsftp中出现过的问题

http://hapig.blog.51cto.com/205559/87446

http://www.linuxsir.org/bbs/thread170912-2.html

第一个问题:
500 OOPS: vsftpd: not configured for standalone, must be started from inetd
原因:vsftpd-2.0.6.tar.gz 在编译安装后,或默认会在/etc/xinetd.d/下添加对vsftp的监听,这样导致vsftp不能独立启用。
解决办法:修改/etc/xinetd.d/vsftpd 中disable 的值为yes (取消xinetd.d对vsftp的管理)
同时在vsftpd.conf配置文件中需要添加listen=YES 项。
这样就可以通过 /usr/sbin/vsftpd + 你的配置文件启动。
第二个问题:
500 OOPS: vsftpd: refusing to run with writable anonymous root
原因:给vsftp的匿名账户默认的主目录配置了过高的文件权限。
解决办法:可以将该目录的权限修正为
[root@localhost ~]# chown root:root 匿名账户目录
[root@localhost ~]# chmod 755 匿名账户目录
以上是我第一次配置vsftp时遇到的问题。

问题 :FTP 文件列表时间与系统时间不一致

原因:

[root@ecwebsvr2 vsftpd]# rpm -qa | grep ftp

vsftpd-2.0.5-10.el5

ftp-0.17-33.fc6

lftp-3.5.1-2.fc6

[root@ecwebsvr2 vsftpd]# cat /etc/issue

Red Hat Enterprise Linux Server release 5 (Tikanga) Kernel \r on an \m

[root@ecwebsvr2 vsftpd]# getconf LONG_BIT

32

[root@ecwebsvr2 vsftpd]# date

2010年 11月 03日 星期三 10:47:54 CST
vsftpd默认使用GMT作为其时间,所以可能会导致与系统时间不一致(系统时间不是GMT , 是CST)

解决

解决客户端登陆vsftpd服务器显示时间与服务器系统时间不一致问题

http://www.iteye.com/topic/32631

http://space.itpub.net/600368/viewspace-610064
1、如果使用 proftd
vi /usr/local/proftpd/etc/proftpd.conf
增加一行 TimesGMT off
ps -ef | grep proftpd
kill -9 31916
/usr/local/proftpd/sbin/proftpd start
2、如果使用 vsftpd
vi /etc/vsftpd/vsftpd.conf
增加一行 use_localtime=YES
service vsftpd restart
3、windows 下的 ftp 服务也有类似问题。本人使用较少,就不献丑了。
说明:这是由于显示了GMT时间造成的,以上解决方法都是屏蔽了GMT时间,采用本地时间来实现的时间上的统一。

[root@arvat4 /]/sbin/service vsftpd status

问题:vsftpd dead but subsys locked

C:\Documents and Settings\Lindows>ftp 192.168.100.40
Connected to 192.168.100.40.
220 stageserver.s*****shop FTP server (Version 5.60) ready.
User (192.168.100.40:(none)): b2c
331 Password required for b2c.
Password:
530 Login incorrect.
Login failed.
ftp> by
221 Goodbye.

原因二:FTP server (Version 5.60) ready.这个版本不是vsftpd的

解决:

[root@stageserver ~]# netstat -an | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
unix 2 [ ACC ] STREAM LISTENING 9437 /tmp/orbit-root/linc-e3c-0-6184c2184446e
unix 2 [ ] STREAM CONNECTED 10320 /tmp/orbit-root/linc-e3c-0-6184c2184446e
unix 2 [ ] STREAM CONNECTED 9445 /tmp/orbit-root/linc-e3c-0-6184c2184446e

[root@stageserver ~]# grep -i ftp /etc/xinetd.d/*
/etc/xinetd.d/gssftp:# description: The kerberized FTP server accepts FTP connections \
/etc/xinetd.d/gssftp:service ftp
/etc/xinetd.d/gssftp: server = /usr/kerberos/sbin/ftpd
/etc/xinetd.d/rsync:# description: The rsync server is a good addition to an ftp server, as it \
/etc/xinetd.d/tftp:# description: The tftp server serves files using the trivial file transfer \
/etc/xinetd.d/tftp:# protocol. The tftp protocol is often used to boot diskless \
/etc/xinetd.d/tftp:service tftp
/etc/xinetd.d/tftp: server = /usr/sbin/in.tftpd
/etc/xinetd.d/tftp: server_args = -s /tftpboot

next修改/etc/xinetd.d/gssftp这个文件,
disable = no 改成 disable = yes 然后重启xinetd,service xinetd restart 再重启vsftpd, service vsftpd restart

搞定
问题:vsftpd 已死,但是subsys 被锁

原因一:

查看FTP端口21有无被占用情况

[root@localhost tmp]# netstat -ptln | grep 21
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 22164/mysqld
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 27480/proftpd
tcp 0 0 :::80 :::* LISTEN 22102/httpd
tcp 0 0 :::443 :::* LISTEN 22102/httpd

可能安装了bbs套件lamp[xampp]附带的功能proftpd与vsftpd有冲突

解决一:

#192.168.121.22

[root@localhost tmp]# find / -name *proftp* -print
/opt/lampp/etc/proftpd.conf
/opt/lampp/var/proftpd.pid
/opt/lampp/var/proftpd
/opt/lampp/var/proftpd/proftpd.scoreboard
/opt/lampp/var/proftpd/proftpd.delay
/opt/lampp/sbin/in.proftpd
/opt/lampp/sbin/proftpd
/opt/lampp/licenses/proftpd
/usr/share/logwatch/scripts/services/proftpd-messages
/usr/share/logwatch/default.conf/services/proftpd-messages.conf

[root@localhost ~]# find / -name proftpd -print
/opt/lampp/var/proftpd
/opt/lampp/sbin/proftpd
/opt/lampp/licenses/proftpd

[root@localhost ~]#
[root@arvat4 /]ps -ef | grep proftpd
[root@arvat4 /]kill -9 13148
[root@arvat4 /]/sbin/service vsftpd restart
关闭 vsftpd: [失败]
为 vsftpd 启动: [确定]
[root@arvat4 /]service vsftpd restar
关闭 vsftpd: [确定]
为 vsftpd 启动: [确定]
[root@arvat4 /]/sbin/service vsftpd restart
关闭 vsftpd: [确定]
为 vsftpd 启动: [确定]

解决二:

http://www.chinaunix.net/jh/15/594039.html

是超级进程中有个gssftp和vsftpd冲突。屏蔽gssftp后再重起xinet和vsftpd就ok了。

解决三:
出现这种问题往往是在系统的locked文件夹中的被锁文件没有删除,建议系统报错时的提示要认真的看看,可以找到问题的原因。(删除locked下的相关被锁文件就好了).

解决四:
我曾碰到这个问题,产生的原因是vsftpd.conf配置不对,逐行试下
肯定是vsftpd.con配置文件的格式问题
譬如
1. option=value "option"和"="和"value"之间是不能有空格的
2. option=value 你的"value"设置成一个文件或者是一个目录,但是在服务器上却没有这个文件或目录
总之应该认真仔细的检查你的vsftpd.conf 文件

解决五

ubuntu下xampp的安装

http://leon-wood.iteye.com/blog/509451

启动 ProFTPD 服务 器
/opt/lampp/lampp startftp
停止 ProFTPD 服务器
/opt/lampp/lampp stopftp
随系统自动启动
ln -s /opt/lampp/lampp /etc/rc.d/rc3.d/S99lampp
ln -s /opt/lampp/lampp /etc/rc.d/rc4.d/S99lampp
ln -s /opt/lampp/lampp /etc/rc.d/rc5.d/S99lampp
取消随系统自动运行
ln -s /opt/lampp/lampp K01lampp
卸载 XAMPP
rm -rf /opt/lampp

http://hi.baidu.com/nethedy/blog/item/d271ab002b120b84e850cd48.html

 

如何在 RedHat 中限制、允许telnet&ftp功能 (转)

http://bluedusk.iteye.com/blog/343377

用SHELL脚本来防止SSH和vsftpd暴力破解

http://sambafeng.iteye.com/blog/1169050

vsftpd配置文件详解

http://chen-gengjia.iteye.com/blog/939874

Linux hosts.allow与hosts.deny文件设置

http://purpen.iteye.com/blog/1135342

禁用Winscp连接的解决办法

http://blog.csdn.net/fbysss/archive/2010/07/13/5732570.aspx

一、背景

图片服务器上的图片、静态文件是通过构建工具自动上传的,目的是一切文件都通过svn来提交,而不要直接上传到图片服务器,因为那样没有更改记录,也不利于文件备份。

这个问题,曾经干了一件蠢事,就是把ssh服务给停止了,的确好使,不过一旦SecureCRT终端关闭,下次也无法连接了。由于winscp有使用 sftp,查了一下网上的说法。sftp不过是ssh的一个包装,并不是另外的协议,没有使用独立端口,要禁用sftp,不太容易。大多数人都说是修改 /etc/ssh/sshd_config,把最后一句Subsystem sftp /usr/libexec/openssh/sftp-server注释掉,然后service sshd restart。 但是,试了几次,winscp依然可以登录,很是郁闷。 后来在linux下使用sftp命令测试,还就是真生效了。也就是说,这种修改,对linux下的sftp客户端是生效的,但对于winscp不好使。

二、思考

是 不是winscp的验证流程不一样呢?具体也不得而知,猜想:是不是注释掉之后,winscp会默认去找Subsystem sftp /usr/libexec/openssh/sftp-server执行,或者默认执行另一个可行的程序呢?那么我们引导一下它,会如何?

三、解决:

1.还原/etc/ssh/sshd_config

2.修改Subsystem sftp /usr/libexec/openssh/sftp-server为Subsystem sftp /usr/libexec/openssh/sftp-server.sh

3.vi Subsystem sftp /usr/libexec/openssh/sftp-server.sh

加入#Subsystem sftp /usr/libexec/openssh/sftp-server

4.chmod 755 /usr/libexec/openssh/sftp-server

然后再用winscp连接测试,提示错误:connection has been unexpectedly closed,Server send command exit status 0;而ssh客户端还可以正常连接,这说明,我们的目的达到了。

Linux 下ftp自动登录 批量 上传 192.168.134.153

[root@b2clogbackup 2011-04-21]# crontab -l
10 03 * * * sh /usr/local/DTS/cronjob.sh
10 03 * * * sh /usr/local/DTS/rmlog.sh
#10 12 * * * sh /usr/local/DTS/ftp.sh >> /usr/local/DTS/ftpsh.out
[root@b2clogbackup 2011-04-21]# more /usr/local/DTS/ftp.sh
#!/bin/bash
#2011-01-14 tangxje@cns*****.com
#ftp the log to 10.19.36.182
echo "ftpcrontab start:"$(date +%c)
ftp -dn<< mytag
open 192.168.114.4
user b2c b2c
bin
cd 134.153_logbak
lcd /data/ProjectDocument/DailyLog/
prompt
mput *.zip
close
bye
mytag
echo "ftpcrontab end:"$(date +%c)

Linux 下ftp自动登录 多机器批量下载 192.168.134.153

[root@b2clogbackup win]# more ftplog.sh
#!/bin/sh
#
cd /b2clog/b2clogbak/
echo "#########################################"$(date +%c)"###############################################"
mkdir $(date +%Y-%m-%d)
cd $(date +%Y-%m-%d)
while read LINE
do
set $LINE
echo $1"Start time:"$(date +%c)
ftp -i -n -d $1<<FTPIT
user $2 $3
bin
cd $4
!mkdir $1
lcd $1
mget *.gz
mdelete *.gz
quit
FTPIT
echo $1"End time:"$(date +%c)
done < /b2clog/b2clogbak/ftplog.txt
echo "##############################################################

 

[root@b2clogbackup win]# more ftplog.txt
192.168.119.11 root root /opt/WCSIHS/httplogs_f/
192.168.119.12 root root /opt/WCSIHS/httplogs_f/

 

Linux 下ftp自动登录
http://blog.csdn.net/xpl121/archive/2009/07/13/4345729.aspx
说明:使用了expect,参数为ftp服务器地址和要下载的文件名
参数:lindex $argv 0 读取ftp服务器ip地址

lindex $argv 1 读取要
编辑:
#vi ftp.sh
spawn ftp [lindex $argv 0]
expect "Name (*):"
send "anonymous\r"
expect "Password:*"
send "\r"
expect "ftp>"
send "binary\r"
expect "ftp>"
send "hash\r"
expect "ftp>"
send "get [lindex $argv 1]\r"
expect "* Transfer complete."
send "exit\r"
执行方法:expect ftp.sh 服务器ip地址 文件名称
(expect ftp.sh 192.168.0.1 filename.txt )

扩展:可以根据需要把用户名和密码也作为参数输入里边,这个根据个人需求去做


使用Shell脚本来实现FTP的自动上传下载

1. FTP自动登录批量下载文件。

#####从ftp服务器上的/home/data 到 本地的/home/databackup####

#!/bin/bash

ftp -n<<!

open 192.168.1.171

user guest 123456

binary

cd /home/data

lcd /home/databackup

prompt

mget *

close

bye

!

2. FTP自动登录上传文件。

####本地的/home/databackup to ftp服务器上的/home/data####

#!/bin/bash

ftp -n<<!

open 192.168.1.171

user guest 123456

binary

hash

cd /home/data

lcd /home/databackup

prompt

mput *

close

bye

!


3. FTP自动登录下载单个文件。

####ftp服务器上下载/home/data/a.sh to local /home/databackup####

#!/bin/bash

ftp -n<<!

open 192.168.1.171

user guest 123456

binary

cd /home/data

lcd /home/databackup

prompt

get a.sh a.sh

close

bye

!

4. FTP自动登录上传单个文件。

####把本地/home/databachup/a.sh up ftp /home/databackup 下####

#!/bin/bash

ftp -n<<!

open 192.168.1.171

user guest 123456

binary

cd /home/data

lcd /home/databackup

prompt

put a.sh a.sh

close

bye

!

使用.netrc文件方式自动登录

在用户目录下下建.netrc的文件
.netrc文件的内容如下:
machine host2 :host2作为登陆用的主机名
login username :ftp用户名
password userpwd : host2用户的口令
macdef init :定义一个名为init的宏,它将在自动注册进程的最后被执行
bin :文件以二进制传输
lcd /backup :进入本地目录/backup
cd /pub :进入远程主机目录/pub
mput :将/backup目录下的所有文件传输至远程主机
bye :退出ftp
并修改文件属性:$chmod 600 .netrc即该文件只能被该用户访问

 

自动、定时、批量、下载、前一天、所有服务器日志文件打包/压缩/存放;

自动、定时、批量、删除、 前一天 、所有服务器所有日志文件,autoftp.

[root@b2clogbackup ~]# ls -l /b2clog/b2clogbak/
total 140
drwxr-xr-x 31 root root 4096 May 30 02:25 2011-05-29-02-00
drwxr-xr-x 31 root root 4096 May 31 02:27 2011-05-30-02-00
drwxr-xr-x 31 root root 4096 Jun  1 02:27 2011-05-31-02-00
drwxr-xr-x 31 root root 4096 Jun  2 02:27 2011-06-01-02-00
drwxr-xr-x 31 root root 4096 Jun  3 02:25 2011-06-02-02-00
drwxr-xr-x 31 root root 4096 Jun  4 02:25 2011-06-03-02-00
drwxr-xr-x 31 root root 4096 Jun  5 02:29 2011-06-04-02-00
drwxr-xr-x 31 root root 4096 Jun  6 02:24 2011-06-05-02-00
drwxr-xr-x 31 root root 4096 Jun  7 02:26 2011-06-06-02-00
drwxr-xr-x 31 root root 4096 Jun  8 02:26 2011-06-07-02-00
drwxr-xr-x 31 root root 4096 Jun  9 02:33 2011-06-08-02-00
drwxr-xr-x 31 root root 4096 Jun 10 03:29 2011-06-09-02-00
drwxr-xr-x 48 root root 4096 Jun  9 22:49 2011-06-09-22-33
drwxr-xr-x 31 root root 4096 Jun 11 02:01 2011-06-10-02-00
drwxr-xr-x 48 root root 4096 Jun 11 03:41 2011-06-10-03-00
drwxr-xr-x 31 root root 4096 Jun 12 05:03 2011-06-11-02-00
drwxr-xr-x 48 root root 4096 Jun 12 03:34 2011-06-11-03-00
drwxr-xr-x 48 root root 4096 Jun 13 03:33 2011-06-12-03-00
drwxr-xr-x 48 root root 4096 Jun 14 03:36 2011-06-13-03-00
drwxr-xr-x 54 root root 4096 Jun 15 02:35 2011-06-14-02-00
drwxr-xr-x 54 root root 4096 Jun 16 03:17 2011-06-15-02-00
drwxr-xr-x  4 root root 4096 Jun 18 09:17 2011-06-16-02-00
drwxr-xr-x 56 root root 4096 Jun 18 02:51 2011-06-17-02-00
drwxr-xr-x 56 root root 4096 Jun 19 02:59 2011-06-18-02-00
drwxr-xr-x 56 root root 4096 Jun 20 02:51 2011-06-19-02-00
drwxr-xr-x 56 root root 4096 Jun 21 02:45 2011-06-20-02-00
drwxr-xr-x 56 root root 4096 Jun 22 02:36 2011-06-21-02-00
drwxr-xr-x 56 root root 4096 Jun 23 02:31 2011-06-22-02-00
drwxr-xr-x 56 root root 4096 Jun 24 03:02 2011-06-23-02-00
drwxr-xr-x 59 root root 4096 Jun 25 02:36 2011-06-24-02-00
drwxr-xr-x 59 root root 4096 Jun 26 02:33 2011-06-25-02-00
drwxr-xr-x 59 root root 4096 Jun 27 02:33 2011-06-26-02-00
drwxr-xr-x 59 root root 4096 Jun 28 02:32 2011-06-27-02-00
drwxr-xr-x 74 root root 4096 Jun 29 02:39 2011-06-28-02-00
drwxr-xr-x 74 root root 4096 Jun 30 02:35 2011-06-29-02-00
[root@b2clogbackup ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       16G   15G  255M  99% /
/dev/sda1              99M   13M   82M  13% /boot
tmpfs                1006M     0 1006M   0% /dev/shm
/dev/mapper/logvg-loglv01
                      197G  136G   52G  73% /b2clog

[root@b2clogbackup ~]# crontab -l

# 自动、定时、批量、下载、前一天、所有服务器日志文件打包/压缩/存放;
# 自动、定时、批量、删除、前一天、所有服务器所有日志文件,一切自动化.
00 02 * * * sh /home/lindows/autoftp/ftplog_v7/V7_Yesterday_Log.sh >> /home/lindows/autoftp/ftplog_v7/V7_Yesterday_Log.out 2>&1
# 定期删除 15天前web log,30天前app log,日志分析、挖掘、钻取、异常订单处理后可删,确保日志收集机磁盘够用,亦可高倍压缩后存放。
00 03 * * * sh /usr/local/DTS/rmlog.sh

 

总结

linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)

http://blog.chinaunix.net/space.php?uid=20406434&do=blog&id=2947718

(1)       传输性能: wget 通过支持后台执行及断点续传提高文件传输效率; rsync 则以其高效的传输及压缩算法达到快传输的目的。

(2)         配置难度: rcp 只需进行简单的配置,创建 .rhost 文件以及设置 /etc/hosts 文件中主机名与 IP 地址列表; wget 设置方便简单,只需在客户端指定参数执行命令即可; rsync 在使用前需要对服务端 /etc/rsyncd.conf 进行参数设定,配置内容相对复杂。

(3)       安全性能: ftp rcp 不保证传输的安全性, scp rsync 则均可基于 ssh 认证进行传输,提供了较强的安全保障。 wget 也可通过指定安全协议做到安全传输。

通过上述的对比不难发现,每种文件传输方法基于其自身的特点与优势均有其典型的适用场景:

(1)       ftp 作为最常用的入门式的文件传输方法,使用简单,易于理解,并且可以实现脚本自动化;但是需要安装 ftp server 才可以访问远程 ftp server

(2)       rcp 相对于 ftp 可以保留文件属性并可递归的拷贝子目录;

(3)       scp 利用 ssh 传输数据,并使用与 ssh 相同的认证模式,相对于 rcp 提供更强的安全保障;

(4)       wget 实现递归下载,可跟踪 HTML 页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构,适合实现远程网站的镜像;

(5)       curl 则适合用来进行自动的文件传输或操作序列,是一个很好的模拟用户在网页浏览器上的行为的工具;

(6)       rsync 更适用于大数据量的每日同步,拷贝的速度很快,相对 wget 来说速度快且安全高效。

(7)       sftp 使用在数据连接上使用 ssh2 ,所以文件的传输是尽可能地安全。但传输速度慢。是 ftp 的替代品,比 ftp 安全,不能访问 http 资源。

(8)       lftp 可以访问 ftp 资源,也可以访问 http 资源。支持断点续传,多进程下载。

 

ssh://loguser:**********@192.168.157.148:22

[root@b2clogbackup ~]#

-,-,-,-,2012-06-04 21:00:00,GET /webapp/wcs/stores/prdprice/1118118_9197_10052_2-0.png HTTP/1.1,200,749,11523,http://www.s*****.com/emall/strd_10052_10051_1_20365_.html,"Mozilla/4.0 (compatible; MSIE 8.
0; Windows NT 5.1; Trident/4.0)",120.192.28.38
-,-,-,-,2012-06-04 21:00:00,GET /emall/thirdSearchNewCmd?city=9281&_=1338814813343 HTTP/1.1,200,82,9967,http://www.s*****.com/emall/Search?storeId=10052&catalogId=10051&searchKeywords=%E9%9B%85%E9%A9%AC
%E5%93%88%E8%BF%B7%E4%BD%A0%E9%9F%B3%E5%93%8D,"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET4.0C; .NET4.0E)",60.27.26.120
-,-,-,-,2012-06-04 21:00:00,GET /webapp/wcs/stores/prdprice/1525178_9063_10052_2-0.png HTTP/1.1,200,733,11883,http://www.s*****.com/emall/pcd_10052_10051_-7_N_20089_20002_.html,"Mozilla/5.0 (Windows NT
5.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5",116.11.199.29
-,-,-,-,2012-06-04 21:00:00,GET /emall/SNSetCityIdCmd?storeId=10052&catalogId=10051&_=1338814775250 HTTP/1.1,200,30,10858,http://www.s*****.com/,"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Tride
nt/4.0; .NET CLR 2.0.50727; KB974488)",113.143.44.182
-,-,-,-,2012-06-04 21:00:00,GET /ssp-sp/searchMixDirectory?keyword=%E8%87%AA%E8%A1%8C%E8%BD%A6&orgId=0000A,31010B,50080Z,501611Z,501112Z,501313Z,500814Z,501621Z,500831Z,500861Z,500862Z,500863Z,500864Z H
TTP/1.1,200,874,14073,http://www.s*****.com/emall/Search?storeId=10052&catalogId=10051&searchKeywords=%E8%87%AA%E8%A1%8C%E8%BD%A6,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.43
22; .NET CLR 2.0.50727; KB974488; 360SE)",113.13.23.238
-,-,-,-,2012-06-04 21:00:00,GET /emall/SNProductPromStatusView?storeId=10052&catalogId=10051&productId=1350466&langId=-7&partNumber=000000000102338292&cityId=9173 HTTP/1.0,200,136,8327,http://www.s*****
.com/emall/prd_10052_10051_-7_1350466_.html,"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8;baidu Transcoder) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729)",61.135.186.17
-,-,-,-,2012-06-04 21:00:00,GET /emall/browseHistory_10052_10051_111671_9067_.html HTTP/1.1,200,135,16089,http://www.s*****.com/emall/prd_10052_10051_-7_436188_1.html,"Mozilla/4.0 (compatible; MSIE 8.0;
 Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; 360SE)",182.91.54.224
-,-,-,-,2012-06-04 21:00:00,GET /emall/SNProductStatusView?storeId=10052&catalogId=10051&langId=-7&partNumber=000000000101263920&cityId=9173&_=1301641601031&productId=357657 HTTP/1.1,200,214,24364,-,"Mo
zilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.4; CIBA) Java/1.6.0_20",61.147.98.13

 

//筛选 access log 日志

[root@b2clogbackup ~]#

find /b2clog/b2clogbak/2012-05-17-02-00/*/httplogs_f/ -name "access*.gz" | xargs -I {} gzip -cd {} | awk -F '-,-,' '{print $2}'|awk -F ',' '{ if ( $1 >= "2012-05-17 09:00:00" && $1 < "2012-05-17 10:00:00" ) print "-,-,-,-,"$0}' >>/b2clog/greplog/20120517_09-10.txt

//替换 /webapp\/wcs\/stores\/servlet/emall/

[root@b2clogbackup ~]#

cat  /b2clog/greplog/20121400_1430.txt | sed 's/webapp\/wcs\/stores\/servlet/emall/g' >/b2clog/greplog/url04181400_1430.txt

[root@b2clogbackup ~]#

//处理 access log日志为excel

 

package com.iteye.lindows.test;

/*
 * 此类把access日志读入,然后放到map中,通过输出流输出,实现统计每类url数量和请求总大小,反应时间的功能
 * 此类包括一个静态方法,实现输入日志的分割
 * 还包括一个main函数,执行输入流,分析,输出流
 */

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;
import java.util.TreeMap;

public class LogParseDaoImpl {
	/*
	 * (non-Javadoc) 实现日志语句的分割,并以字符数组的形式输出想要分析的各字段
	 * 
	 * @see
	 * com.s*****.monitor.LogUtil.parse.LogParseDao#logParse(java.lang.String)
	 */
	public static String[] strLong(String line) {

		String[] str = new String[3];
		if (line.indexOf("HTTP/1.1,") != -1) {
			str[1] = line.split("HTTP/1.1,")[1].split(",")[1];
			str[2] = line.split("HTTP/1.1,")[1].split(",")[2];
		} else if (line.indexOf("HTTP/1.0,") != -1) {
			str[1] = line.split("HTTP/1.0,")[1].split(",")[1];
			str[2] = line.split("HTTP/1.0,")[1].split(",")[2];
		} else {
			return null;
		}
		String url1 = line.split(",")[5];
		String url = "error?error";

		if (url1.indexOf("GET") != -1) {
			url = url1.substring(url1.indexOf("GET"), url1.length());
		} else if (url1.indexOf("POST") != -1) {
			url = url1.substring(url1.indexOf("POST"), url1.length());
		} else if (url1.indexOf("HEAD") != -1) {
			url = url1.substring(url1.indexOf("HEAD"), url1.length());
		} else {
			// url=url1;
			url1 = line.split(",")[6];

			if (url1.indexOf("GET") != -1) {
				url = url1.substring(url1.indexOf("GET"), url1.length());
			} else if (url1.indexOf("POST") != -1) {
				url = url1.substring(url1.indexOf("POST"), url1.length());
			} else if (url1.indexOf("HEAD") != -1) {
				url = url1.substring(url1.indexOf("HEAD"), url1.length());
			} else {
				System.out.println(">>>>>>>>>>>>>>>>>>>>>>>:" + line);
			}

		}

		url = url.split("\\?|_|%|\\s+|\\(")[1];

		if (url != null) {
			str[0] = url;
		} else {
			str[0] = "error";

		}

		return str;
	}

	public static void main(String[] args) throws IOException {
		Map<String, Long[]> map = new TreeMap<String, Long[]>();
		File file = new File("D://TestCase//log_analysis//url20120610_21-22.txt");
		file.mkdirs();
		if (!file.exists()) {
			System.out.println("文件不存在~!");
		}
		BufferedReader reader = new BufferedReader(new FileReader(file));
		BufferedWriter writer = new BufferedWriter(new FileWriter(
				"D://TestCase//log_analysis//url20120610_21-22.txt.xls"));
		String line = null, key = null;
		while ((line = reader.readLine()) != null) {
			String[] loga = LogParseDaoImpl.strLong(line);
			if (loga == null)
				continue;
			key = loga[0];
			if (loga[0].indexOf("prdprice") != -1) {
				key = "/webapp/wcs/stores/prdprice/";
			}
			if (loga[0].indexOf("images") != -1) {
				key = "/wcsstore/ConsumerDirectStorefrontAssetStore/images";
			}
			// if(loga[0].indexOf("prd_10052_22001")!=-1){
			// key="prd_10052_22001";
			// }
			if (map.containsKey(key)) {
				if ("-".equals(loga[1])) {
					loga[1] = new String("0");
				}
				if ("-".equals(loga[2])) {
					loga[2] = new String("0");
				}
				Long[] longb = map.get(key);
				longb[0] = longb[0] + 1;
				longb[1] = longb[1] + Long.parseLong(loga[1]);
				longb[2] = longb[2] + Long.parseLong(loga[2]);
				map.put(key, longb);
			} else {
				if ("-".equals(loga[1])) {
					loga[1] = new String("0");
				}
				if ("-".equals(loga[2])) {
					loga[2] = new String("0");
				}
				Long[] longa = { 1l, Long.parseLong(loga[1]),
						Long.parseLong(loga[2]) };
				map.put(key, longa);
			}
		}
		int i = 0;
		writer.write("url" + "\t" + "访问次数" + "\t" + "总访问大小" + "\t" + "总反应时间"
				+ "\t\n");
		for (String key2 : map.keySet()) {
			Long[] longc = map.get(key2);
			writer.write(key2 + "\t" + longc[0] + "\t" + longc[1] + "\t"
					+ longc[2] + "\t\n");
			i++;
			if (i % 1000 == 0) {
				writer.flush();
			}
		}
		writer.flush();

		System.out.println("over");
	}
}

 

 

自动化定时收集FTP服务器accesslog 192.168.157.79

[root@Loadrunner_19 solrsearch]# ls -l
总计 12
-rwxr-xr-x 1 root root  333 10-08 15:33 getlog.sh
-rw-r--r-- 1 root root  128 09-20 11:47 ip.txt
drwxr-xr-x 2 root root 4096 10-10 16:24 logs

[root@Loadrunner_19 solrsearch]# more ip.txt
192.168.119.173
192.168.119.174
192.168.119.175
192.168.119.176
192.168.119.177
192.168.119.178
192.168.119.179
192.168.119.180

[root@Loadrunner_19 solrsearch]# more /accesslog/solrsearch/getlog.sh

#!/bin/bash
cat ip.txt | while read line
do
    echo  start get accesslog from $line
   
   wget ftp://test:test@192.168.157.148/b2clogback/2012-$1/2012-$1-$2-02-00/${line}/logs/access_log_2012-$1-$2-$3_00_00.gz  -O  ./logs/${line}_access_log_2012-$1-$2-$3_00_00.gz

    echo  finish get accesslog from $line
done

 

[root@Loadrunner_19 logs]# ls -l /accesslog/solrsearch/logs
总计 51024
-rw-r--r-- 1 root root 6529319 10-08 15:33 192.168.119.173_access_log_2012-10-05-21_00_00.gz
-rw-r--r-- 1 root root 6527137 10-08 15:33 192.168.119.174_access_log_2012-10-05-21_00_00.gz
-rw-r--r-- 1 root root 6542655 10-08 15:33 192.168.119.175_access_log_2012-10-05-21_00_00.gz
-rw-r--r-- 1 root root 6508195 10-08 15:33 192.168.119.176_access_log_2012-10-05-21_00_00.gz
-rw-r--r-- 1 root root 6519517 10-08 15:33 192.168.119.177_access_log_2012-10-05-21_00_00.gz
-rw-r--r-- 1 root root 6508208 10-08 15:33 192.168.119.178_access_log_2012-10-05-21_00_00.gz
-rw-r--r-- 1 root root 6492075 10-08 15:33 192.168.119.179_access_log_2012-10-05-21_00_00.gz
-rw-r--r-- 1 root root 6508604 10-08 15:33 192.168.119.180_access_log_2012-10-05-21_00_00.gz

end

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics