在看shell编程,然后有一节讲自动登录ftp服务器,所以对ftp一探究竟。

我使用的是ubuntu

1、将自己的电脑做成ftp服务器(root用户执行)

下载安装vsftd:apt-get install vsftpd

安装完成之后,使用service vsftpd status查看vstfpd服务状态

修改配置文件:/etc/vsftpd.conf

listen=YES#服务器监听

anonymous_enable=YES#匿名访问允许

#这句话的意思是允许使用帐号为anonymous,密码为空登录

local_enable=YES # 本地主机访问允许

#共享目录
                     local_root=/srv/ftp

write_enable=YES # 写允许

chroot_local_user=YES

#anon_upload_enable=YES
                     # 匿名上传允许,默认是NO,嫌麻烦的可以开起来。出了问题我不负责~
                    #anon_mkdir_write_enable=YES # 匿名创建文件夹允许
                    dirmessage_enable=YES # 进入文件夹允许
                    xferlog_enable=YES # ftp 日志记录允许
                    connect_from_port_20=YES # 允许使用20号端口作为数据传送的端口
                    secure_chroot_dir=/var/run/vsftpd/empty
                    pam_service_name=vsftpd
                    rsa_cert_file=/etc/ssl/private/vsftpd.pem

具体含义:http://www.sudu.cn/service/detail.php?id=11656

设置相关目录

安装完毕后,/srv下会增加一个ftp目录。同时系统会增加一个名为ftp的用户组,可以用~$ sudo cat /etc/shadow 查看, 如 ftp:*:14993:0:99999:7:::。我们在/srv/ftp目录下创建两个分别名为upload和download的目录,分别用于上传和下载。接下来我们为刚才创建的几个目录设置权限,如下:

权限 /srv/ftp /srv/ftp/upload /srv/ftp/download

用户组(ftp) 读 读写 读

其他用户 读 读写 读

执行命令:

~$ sudo chmod 755 /srv/ftp

~$ sudo chmod 777 /srv/ftp/upload

~$ sudo chmod 755 /srv/ftp/download

如此,一方面我们允许了用户组ftp访问/srv/ftp (匿名访问);一方面赋予了用户组ftp对/srv/ftp/upload的写权利,因此网络上的用户可以方便地上传文件,但注意,当他们上传后,上传的文件只有root对这些文件拥有权限,也就是说这个目录仅能用于上传,无法下载其中的文件;此外赋予了用户组ftp对 /home/ftp/download的读权利,同时我们拷贝进该目录下的文件对于用户组而言通常都有读权利,因此网络上的用户从此目录下能且仅能下载文件。从而满足了我们预先的要求。

设置用户目录

如果你设置了匿名用户也可以登录上传的话~这个可以省了~
                     (1) 增加组 sudo groupadd ftpgroup

(2 )修改vsftpd.conf

~$ sudo gedit /etc/vsftpd.conf
                    将底下三行

#限制用户只能在家目录里

chroot_local_user=YES
                    #chroot_list_enable=YES
                    # (default follows)
                    #chroot_list_file=/etc/vsftpd/chroot_list
                    改为
                    chroot_list_enable=YES
                    # (default follows)
                    chroot_list_file=/etc/vsftpd/chroot_list

(3) 增加用户ftpuser并设置其目录为/srv/ftp/upload
                          sudo useradd -g ftpgroup -d /srv/ftp -M ftpuser

(注:G:用户所在的组 d:表示创建用户的自己目录的位置给予指定

M:不建立默认的自家目录,也就是说在/home下没有自己的目录)

(4 )设置用户口令 passwd ftpuser
                    (5) 编辑chroot_list文件:
                          sudo gedit /etc/vsftpd.chroot_list
                          内容为ftp用户名,每个用户占一行,如:
                          ftpuser

(6 )重新启动vsftpd:
                     sudo service vsftpd start

参考http://blog.csdn.net/nation_chen/article/details/7066277

注意:ftp用户,是不能删除的

一、设置成功后,就可以使用本地系统里的帐号进行访问ftp了

验证上传,下载,OK了

二、在用的过程中,有各种各样的问题,搜答案的时候看到了下面的一个命令

adduser -g ftp -s /sbin/nologin mmc

然后使用的时候发现不能登录ftp,不知道为什么

由于只是为了学习自动登录ftp,现在可以进行下一步实验,所以没再去看虚拟用户,有兴趣的兄弟可以取看看

三、实例

1、自动上传下载文件

#!/usr/bin/expect -f
#注意这个开头,使用的是/usr/bin/expect -f 而不是/bin/bash,写习惯了也就不注意了
#echo "Please input ip: "
#read ip
#echo "Please input filename: "
#read filename
set ip [ lindex $argv 0 ]
set filename [ lindex $argv 1 ]
set savepath [ lindex $argv 2]
spawn ftp $ip
expect "Name*"
#登录用户
send "username"
send "\r"
#登录用户的密码
expect "Password*"
send "password"
send "\r"
expect "ftp>*"
#指定所要下载的文件路径和保存在本地的文件路径
send "get $filename $savepath"
send "\r"
#下面的提示信息也没有显示,不知道为什么
expect {"*Failed*" { send_user "Download failed\r";send "quit\r"}"*Send*" {send_user "Download ok \r"; send "quit\r"}
}
#这个或许也可以不写。
expect eof

不能使用"."来执行这个文件,需要将其属性设置为可执行,

最终实验目的达到:

1、测试ftp,并能够下载文件

2、体会expect编程,使工作自动化

2、自动备份文件

需要在家目录中创建一个文件夹,权限为777,不能直接在家目录里上传,否则提示553 Could not create file.
/srv/ftp# mkdir upload
/srv/ftp# chmod 777 upload

#!/usr/bin/expect -f
set ip [ lindex $argv 0 ]
set filename [ lindex $argv 1]
set backuppath [lindex $argv 2]
spawn ftp $ip
expect "Name*"
send "liyongchao"
send "\r"
expect "Password:*"
send "liyongchao"
send "\r"
expect "ftp>*"
send "put $filename $backuppath"
send "\r"
expect {"*Failed*" {send_user "Backup failed!\r";send "quit\r"}"*Transfer complete*" {send_user "Backup seccess\r";send "quit\r"}
}

注意换行符"\r"

ftp自动登录服务器相关推荐

  1. Linux 下ftp自动登录

    Linux 下ftp自动登录      操作系统:linux 说明:使用了expect,参数为ftp服务器地址和要下载的文件名 参数:lindex $argv 0  读取ftp服务器ip地址      ...

  2. 2012自动登录服务器,配置Windows自动登录 - Windows Server | Microsoft Docs

    打开自动登录Windows 09/08/2020 本文内容 本文介绍如何将Windows密码和其他相关信息存储在注册表数据库中,以自动执行登录过程. 通过使用此功能,其他用户可以启动计算机并使用您建立 ...

  3. bat自动登录服务器取文件,批处理(.bat)一键备份资料,自动登录局域网进行备份,加~批处理.bat加密软件...

    复制代码到txt 另存为xx.bat 即可 需要修改call :s 源地址即本机例如D:\XX 目标地址即服务器例如\\server\xx 服务器用户 密码 %output% 改成自己的 例如 cal ...

  4. 清除windows文件资源管理器FTP自动登录状态

    在Windows的文件资源管理器登录FTP,设置保存密码自动登录,这样在下次登录就免去了输入密码的步骤,很方便. 但是想换另一个FTP账号登录,由于之前的保密了账号密码,会自动登录到之前的账号,不会出 ...

  5. mac 终端登陆linux,Mac终端自动登录服务器

    效果 输入命令,选择一个序号登录服务器 $ aoel (1) first 192.168.1.1 (2) 第二台机器 192.168.1.2 配置文件 1. 填写服务器信息 computerInfo. ...

  6. 如何清除FTP自动登录状态

    前不久工作需要登陆FTP时选择保存密码,第二次使用时不用输入密码很方便,但是同样的ftp地址,用户用户名更换了,今天再次登录时无论如何无法跳出那个让输入用户名的界面,经过百度,找到了答案: 解决方法: ...

  7. Openwrt配置ssh自动登录服务器socks5转发

    http://blog.onovps.com/archives/openwrt-ssh-socks5.html 本文目的实现Openwrt自动ssh数据转发,内部局域网用户可随时通过此ssh实现代** ...

  8. linux脚本登陆ftp,linux shell 下自动登录ftp服务器并自动上传下载文件

    1.自动下载 #!/bin/sh ftp -n 192.168.0.231 << EOF #-n表示-n意思是不读取默认.netrc文件中的设定,< user whl whl #用户 ...

  9. linux expect自动登录ssh,ftp

    expect是一种能够按照脚本内容里面设定的方式与交互式程序进行"会话"的程序.根据脚本内容,Expect可以知道程序会提示或反馈什么内容以及 什么是正确的应答.它是一种可以提供& ...

最新文章

  1. html model 属性值,如何将Model属性编辑为HTML
  2. 周围剃光头顶留长发型_为什么很多秃头的人,宁愿周围留一圈头发,也不愿剃成光头?...
  3. Go语言MD5加密用法实例
  4. Spring3中js/css/jpg/gif等静态资源无法找到(No mapping found for HTTP request with URI)问题解决--转载...
  5. matlab 移动平均_两所高校被禁用MATLAB背后,是工业设计能力之争
  6. 年后开课 | 第 4 期临床基因组家系分析,同时解决科研和临床问题
  7. 服务器按ctrl alt delete没有用_用完这些快捷键,我再也回不去了(Win系统篇)
  8. Kendo UI grid 表格数据更新
  9. B-数,B+树,B*树简单定义
  10. 手工增加widcomm对蓝牙USB dongle的识别
  11. 09面向对象基本概念
  12. mysql开启事务并锁表_MySQL:如何锁定表并启动事务?
  13. 又一个PS2汉化入门
  14. APM2.8 Rover 自动巡航车设计(固件安装和设置)
  15. layui列表筛选列_基于layui实现高级搜索(筛选)功能
  16. perl执行环境安装(Windows)
  17. windows2012自动锁定计算机,如何去除 windows server 2012 r2 自动锁定
  18. 同步机构应遵循哪些基本准则
  19. VC 编译选项的使用点滴 warring lnk4908
  20. abp更改为mysql_ABPZero系列教程之拼多多卖家工具 更改数据库为MySQL数据库

热门文章

  1. 基于matlab的人脸美白,人脸识别SDK的使用会对美颜功能造成怎样的影响
  2. 2013年终总结--缅怀过去,展望未来
  3. python中为程序添加小图标的方法
  4. vue-cil项目初始化
  5. Unity 物体添加重力
  6. Excel学习笔记5||日期时间函数NOW、DATE、DATEDIF、WEEKDAY... ...
  7. Springboot毕业设计毕设作品,果蔬大全和智能识别系统 开题报告
  8. 写论文如何将自己的语言学术化?牢记四句话就可以了!
  9. VMware Workstation 9下安装Fedora 18图文教程
  10. GameFramework篇:StarForce流程讲解