ruby中读取txt文件内容 (ruby读取txt文件)

ruby文件操作,ruby如何访问url

一、FTP安装

  • 安装
 $ sudo apt-get update
 $ sudo apt-get install vsftpd
  • 修改配置文件 /etc/vsftpd.conf,下面是具体配置说明
 # 禁止匿名用户登录
 anonymous_enable=NO
 # 允许系统用户登录
 local_enable=YES
 # 启用可以修改文件的 FTP 命令
 write_enable=YES
 # 本地用户创建文件的 umask 值
 local_umask=022
 # 允许为目录配置显示信息,显示每个目录下面的message_file文件的内容
 dirmessage_enable=YES
 # 开启日记功能 
 xferlog_enable=YES
 # 使用标准的20端口来连接ftp 
 connect_from_port_20=YES
 # 使用标准日志格式 
 xferlog_std_format=YES
 # 如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录
 chroot_list_enable=YES
 # 指定限制的用户文件
 chroot_list_file=/etc/vsftpd/chroot_list
 # ftp服务器将处于独立启动模式
 listen=YES
 # 设置一个本地用户登录后进入到的目录
 local_root=/home/ftp
 # 设置PAM认证服务的配置文件名称,该文件保存在“/etc/pam.d/”目录下
 pam_service_name=vsftpd
 # ftp将检查userlist_file设置文件中指定的用户是否可以访问vsftpd服务器
 userlist_enable=YES
 # 只允许user_list文件中记录的ftp用户能登录vsftp服务,其他的ftp用户都不可以登录。
 userlist_deny=NO
 # 定义限制/允许用户登录的文件
 userlist_file=/etc/vsftpd/allowed_users 
 # ftp服务器将使用tcp_wrappers作为主机访问控制模式
 tcp_wrappers=YES
 # 连接ftp服务费使用的端口
 listen_port=21
  • 创建用户
 #创建目录
 mkdir /home/ftp
 #修改目录权限
 chmod -R 777 /home/ftp
 #创建用户,并禁止登陆系统,将fyp目录给予这个用户
 useradd -d /home/ftp -s /sbin/nologin ftpuser
 #为用户创建密码
 passwd ftpuser
 #在etc下创建allowed_users
 touch allowed_users
 #然后把ftpuser写入到allowed_users文件中
 vim /etc/allowed_users
  • 启动FTP服务
 #启动命令
 service vsftpd start
 #查看状态
 service vsftpd status
  • 测试访问

在浏览器地址栏输入 ftp://ip,然后在弹出的输入框中输入刚才创建的账号密码即可访问,如图

ruby文件操作,ruby如何访问url

ruby文件操作,ruby如何访问url

二、Ruby读取FTP

ruby使用自己的net/ftp即可读取ftp内容

 require ’net/ftp’
 class FtpHelp
 HOST = "ip"
 PORT = "21"
 USER = "ftpuser"
 PSW = "psw"
	 def self.get_file_by_path(es, path)
		 ftp = Net::FTP.new
		 #连接ftp
		 ftp.connect(HOST, PORT)
		 #登陆
		 ftp.login(USER, PSW)
		 ftp.passive = true
		 #创建本地路径
		 local_path = local_path(path)	
		 #临时文件路径
		 tmp_path = local_path+".tmp"
		 #开始读取文件
		 begin
			 ftp.getbinaryfile(path, tmp_path)
		 rescue
			 File.delete(tmp_path) if File.exist?(tmp_path)
		 end
		 #把临时文件改为正式文件路径
		 File.rename(tmp_path, local_path) if File.exist?(tmp_path)
		 #关闭ftp
		 ftp.close
		 if File.exist?(local_path)
		 	return File.open(local_path)
		 else
			 return nil
		 end
	 end
 #创建本地路径
	 def self.local_path(file)
 		 local = File.join(PATH+"/public/ftpfile", file)
 		 FileUtils.makedirs(File.dirname(local))
 		 local
 	 end
 end