lftp默认是主动模式还是ftp主动和被动模式式

详解“FTP文件传输服务”安装配置实例
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为&文传协议&。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
互联网上提供文件存储和访问服务的计算机,他们依照的是FTP协议提供服务!支持FTP协议的服务器就是FTP服务器!FTP协议提供存储和传输服务的一套协议!
下载&(Download)和&上传&(Upload)。&下载&文件就是从远程主机拷贝文件至自己的计算机上;&上传&文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
ftp工作原理
ftp采用客户端/服务端的工作模式(C/S结构),通过TCP协议建立客户端和服务器之间的连接,但与其他大多数应用协议不同,FTP协议在客户端和服务端之间建立了两条通信链路,分别是控制链路和数据链路,其中,控制链路负责FTP会话过程中FTP命令的发送和接收,数据链路则负责数据的传输
FTP会话包含了两个通道,控制通道和数据通道,FTP的工作有两种方式,一种是主动模式,一种是被动模式,以FTPServer为参照物,主动模式,服务器主动连接客户端传输,被动模式,等待客户端的的连接(无论是主动模式还是被动模式,首先的控制通道都是先建立起来的,只是在数据传输模式上的区别)
工作的原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理如下图:
PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输,原理如下图:
工作端口和模式
20号端口:数据传输端口 ftp-data21号端口:指令传输端口
数据传输原理: FTP的传输有两种方式:ASCII、二进制。
ASCII传输方式
假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,,字处理文件或者压缩文件。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝。
二进制传输模式
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会损坏数据。(ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果传输二进制文件,所有的位都是重要的。)
常见的FTP服务
Windows下:Serv-U FTP Server下有代表性的FTP服务器软件是Wu-FTP、ProFTP及vsftpd。Wu-FTP(Washington University FTP)是由美国华盛顿大学开发的、以效率和稳定性为参考量的FTP软件。它的功能强大,配置较复杂,由于开发时间较早,应用十分广泛,也因此成为们主要的攻击目标。Wu-FTP的早期各级版本不断出现安全,系统管理员不得不因安全因素而经常对其进行升级。ProFTP针对Wu-FTP的弱项而开发,除了在安全性方面进行了改进外,还具备设置简单的特点,并提供了一些Wu-FTP没有的功能,大大简化了架设和管理FTP服务器的工作。vsftpd则凭借在安全性方面的出色表现,被很多大型网站广为采用。
Vsftpd服务器的安装
vsftpd-2.2.2-11.el6_4.1.x86_64.rpm //服务端软件包 ftp-0.17-54.el6.x86_64.rpm //客户端软件包lftp-4.0.9-1.el6.x86_64.rpm //类似ftp的客户端软件包,具有增强功能
1、安装vsftpd软件
[root@localhost ~]# yum -y install vsftpd
2、相关配置文件
[root@localhost ~]# cd /etc/vsftpd/[root@localhost vsftpd]# lsftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh/etc/vsftpd/vsftpd.conf //主配置文件,核心配置文件/etc/vsftpd/ftpusers //黑名单,这个里面的用户不允许访问FTP服务器/etc/vsftpd/user_list //白名单,允许访问FTP服务器的用户列表
3、启动服务
服务启动与关闭[root@localhost vsftpd]# chkconfig vsftpd on[root@localhost vsftpd]# service vsftpd startStarting vsftpd for vsftpd: [ OK ][root@localhost vsftpd]# netstat -antup | grep ftptcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2579/vsftpd tcp 0 0 10.1.252.97:21 10.1.250.64:54777 ESTABLISHED 2582/vsftpd
Vsftpd.conf配置文件详解
[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf#################用户登陆控制############## anonymous_enable=YES #接受匿名用户no_anon_password=YES #匿名用户login时不询问口令  anon_root=(none) #匿名用户主目录  local_enable=YES #接受本地用户local_root=(none) #本地用户主目录 deny_email_enable=YES #如果匿名用户需要密码,那么使用banned_email_file里面的电子邮件地址的用户不能登录check_shell=YES #仅在没有pam验证版本时有用,是否检查用户有一个有效的shell来登录userlist_enable=YES #若启用此选项,userlist_deny选项才被启动userlist_deny=NO #若为YES,则userlist_file中的用户将不能登录,为NO则只有userlist_file的用户可以登录#如果和chroot_local_user一起开启,那么用户锁定的目录来自/etc/passwd每个用户指定的目录passwd_chroot_enable=NO #切换目录密码支持ftp_username=FTP   #定义匿名登入的使用者名称。默认值为ftp。#################用户权限控制###############write_enable=YES #可以上传(全局控制).local_umask=022 #本地用户上传文件的umaskfile_open_mode=0666 #上传文件的权限配合umask使用anon_upload_enable=NO #匿名用户可以上传anon_mkdir_write_enable=NO #匿名用户可以建目录anon_other_write_enable=NO #匿名用户修改删除anon_world_readable_only=YES #如果设为YES,匿名登入者会被允许下载可的档案。默认值为YES。#guest_enable=NO #如果开启,那么所有非匿名登陆的用户名都会被切换成guest_username指定的用户名chown_uploads=YES #所有匿名上传的文件的所属用户将会被更改成chown_usernamechown_username=lightwiter #匿名上传文件所属用户名chroot_list_enable=YES #如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录async_abor_enable=YES #允许使用&async ABOR&命令,一般不用ascii_upload_enable=YES #使用ASSCII上传ascii_download_enable=YES #用ASCII 模式下载secure_chroot_dir=/usr/share/empty #这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限,当vsftpd不需要file system 的权限时,就会将使用者限制在此数据夹中 默认值为/usr/share/empty###################超时设置##################idle_session_timeout=600 #空闲连接超时data_connection_timeout=120 #数据传输超时ACCEPT_TIMEOUT=60 #PAVS请求超时connect_timeout=60 #PROT模式连接超时################服务器功能选项###############xferlog_enable=YES #开启日记功能xferlog_std_format=YES #使用标准格式#log_ftp_protocol=NO #当xferlog_std_format关闭且本选项开启时,记录所有ftp请求和回复,当调试比较有用.pasv_enable=YES #允许使用pasv模式#pasv_promiscuous=NO #关闭安全检查,Pasv向#port_enable=YES #允许使用port模式#prot_promiscuous #关闭安全检查,Port向tcp_wrappers=YES #开启tcp_wrappers支持pam_service_name=vsftpd #定义PAM 所使用的名称,预设为vsftpdnopriv_user=nobody #当服务器运行于最底层时使用的用户名pasv_address=(none) #使vsftpd在pasv命令回复时跳转到指定的IP地址.(服务器联接跳转?)#################服务器性能选项###############ls_recurse_enable=YES  #是否能使用ls -R命令以防止浪费大量的服务器资源#one_process_model #是否使用单进程模式listen=YES #绑定到listen_port指定的端口,既然都绑定了也就是每时都开着的,就是那个什么standalone模式text_userdb_names=NO #当使用者登入后使用ls -al 之类的指令查询该档案的管理权时,预设会出现拥有者的UID,而不是该档案拥有者的名称。若是希望出现拥有者的名称,则将此功能开启。use_localtime=NO #显示目录清单时是用本地时间还是GMT时间,可以通过mdtm命令来达到一样的效果#use_sendfile=YES #测试平台优化################信息类设置################ftpd_banner=WelcomeFTP Server. #login时显示欢迎信息.如果设置了banner_file则此设置无效dirmessage_enable=YES #允许为目录配置显示信息,显示每个目录下面的message_file文件的内容 #setproctitle_enable=YES #显示会话状态信息,关!##############文件定义 ##################chroot_list_file=/etc/vsftpd/vsftpd.chroot_list#定义不能更改用户主目录的文件userlist_file=/etc/vsftpd/vsftpd.user_list #定义限制/允许用户登录的文件banner_file=/etc/vsftpd/banner #定义登录信息文件的位置banned_email_file=/etc/vsftpd.banned_emails #禁止使用的匿名用户登陆时作为密码的电子邮件地址xferlog_file=/var/log/vsftpd.log #日志文件位置message_file=.message #目录信息文件##############目录定义 #################user_config_dir=/etc/vsftpd/userconf #定义用户配置文件的目录   #定义本地用户登陆的根目录,注意定义根目录可以是相对路径也可以是绝对路径.相对路径是针对用户家目录来说的.local_root=webdisk #此项设置每个用户登陆后其根目录为/home/username/webdiskanon_root=/var/ftp  #匿名用户登陆后的根目录#############用户连接选项#################max_clients=100 #可接受的最大client数目max_per_ip=5 #每个ip的最大client数目connect_from_port_20=YES #使用标准的20端口来连接ftplisten_address=192.168.0.2 #绑定到某个IP,其它IP不能访问#listen_port=2121 #绑定到某个端口#ftp_data_port=2020 #数据传输端口pasv_max_port=0 #pasv连接模式时可以使用port 范围的上界,0 表示任意。默认值为0。pasv_min_port=0   #pasv连接模式时可以使用port 范围的下界,0 表示任意。默认值为0。##############数据传输选项#################anon_max_rate=51200 #匿名用户的传输比率(b/s)local_max_rate=5120000 #本地用户的传输比率(b/s)
配置FTP服务器实例
通过修改不同的配置文件选项,达到不同的实验效果
匿名FTP的基本配置
使用匿名FTP,用户无需输入用户名密码即可登录FTP服务器,vsftpd安装后默认开启了匿名ftp的功能,用户无需额外配置即可使用匿名登录ftp服务器
这个时候用户可以匿名方式登录ftp服务器,查看并下载匿名账户主目录下的各级目录和文件,但是不能上传文件或者创建目录
[root@localhost ~]# lftp 10.1.252.97lftp 10.1.252.97:~& ls drwxr-xr-x 2 0 0 4096 May 11 06:17 publftp 10.1.252.97:/& cd pub/lftp 10.1.252.97:/pub& put /etc/issueput: Access failed: 550 Permission denied. (issue) //拒绝上传lftp 10.1.252.97:/pub& get 1.txt //可以下载lftp 10.1.252.97:/pub&
匿名ftp的其他设置
出于安全方面的考虑,vsftpd在默认情况下不允许用户通过匿名FTP上传文件,创建目录等更改操作,但是可以修改vsftpd.conf配置文件的选项,可以赋予匿名ftp更多的权限实例1、允许匿名ftp上传文件1、修改vsfpd.conf
write_enable=YESanon_upload_enable=YES
2、更改/var/ftp/pub目录的权限,为ftp用户添加写权限,并重新加载配置文件
[root@localhost pub]# chmod o+w /var/ftp/pub/[root@localhost pub]# service vsftpd reloadShutting down vsftpd: [ OK ]Starting vsftpd for vsftpd: [ OK ]
lftp 10.1.252.97:/pub& put /etc/issue79 bytes transferred //成功上传lftp 10.1.252.97:/pub& ls-rw-r--r-- 1 0 0 0 Jul 25 01:13 1.txt-rw------- 1 14 50 79 Jul 25 01:19 issue
实例2、允许匿名ftp创建目录1、修改vsftpd.conf文件
write_enable=YESanon_mkdir_write_enable=YES
2、更改/var/ftp/pub目录的权限,为ftp用户添加写权限,并重新加载配置文件
[root@localhost pub]# chmod o+w /var/ftp/pub/[root@localhost pub]# service vsftpd reloadShutting down vsftpd: [ OK ]Starting vsftpd for vsftpd: [ OK ]
lftp 10.1.252.97:/pub& mkdir zabbixmkdir ok, `zabbix' createdlftp 10.1.252.97:/pub& ls //创建成功-rw-r--r-- 1 0 0 0 Jul 25 01:13 1.txt-rw------- 1 14 50 79 Jul 25 01:19 issuedrwx------ 2 14 50 4096 Jul 25 01:23 zabbix
配置本地用户登录
本地用户登录就是指使用Linux操作系统中的用户账号和密码登录ftp服务器,vsftp安装后默只支持匿名ftp登录,用户如果试图使用Linux操作系统中的账号登录服务器,将会被vsftpd拒绝1、创建本地用户
[root@localhost pub]# useradd zhanghe[root@localhost pub]# passwd zhangheChanging password for user zhanghe.New password: BAD PASSWORD: it is too simplistic/systematicBAD PASSWORD: is too simpleRetype new password: passwd: all authentication tokens updated successfully.
2、修改vsftpd.conf文件
local_enable=YES
3、修改目录权限
[root@localhost html]# chmod o+w /var/www/html/
4、登录账户测试
配置虚拟用户登录(MySQL认证)
1、安装MySQL并创建对应用户和表
[root@localhost ~]# yum install -server -y #安装MySQL数据库[root@localhost ~]# service mysqld start #启动数据库[root@localhost ~]# mysql_secure_installation #初始化MySQL配置
创建用户并授权,创建对应数据库和表并插入两行数据
[root@localhost ~]# mysql -uroot -pEnter password: mysql& GRANT ALL ON vsftpd.* TO vsftpd@'%' IDENTIFIED BY ';;Query OK, 0 rows affected (0.00 sec) #授予用户权限mysql& CREATE DATABASE #创建数据库Query OK, 1 row affected (0.00 sec)mysql& #进入指定默认数据库Database changedmysql& CREATE TABLE vsftpd.users (uid SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE KEY,name VARCHAR(100) NOT NULL PRIMARY KEY,password CHAR(48) NOT NULL); #创建表Query OK, 0 rows affected (0.01 sec)mysql& INSERT INTO users (name,password) VALUES ('tom',PASSWORD('mageedu')),('jerry',PASSWORD('mageedu')),('lucy',PASSWORD('mageedu')); #插入3行,用户为tom,jerry,lucyQuery OK, 3 rows affected (0.00 sec)Records: 3 Duplicates: 0 Warnings: 0mysql& FLUSH PRIVILEGES; #刷新权限Query OK, 0 rows affected (0.00 sec)mysql& quitBye
2、配置vsftpd基于MySQL表的虚拟用户
首先要完成基于MySQL表的认证,需要通过pam_mysql模块实现,我们要先安装pam_mysql
pam_mysql模块CentOS 6:epelCentOS 7:编译安装
[root@localhost ~]# yum -y install pam_mysql
准备要映射成为的系统账号:
[root@localhost ~]# mkdir -pv /ftproot/{pub,upload}[root@localhost ~]# useradd -d /ftproot vuser[root@localhost ~]# setfacl -m u:vuser:rwx /ftproot/upload
准备基于mysql认证的pam配置文件:/etc/pam.d/vsftpd.mysql
[root@localhost ~]# vim /etc/pam.d/vsftpd.mysqlauth required pam_mysql.so host=10.1.252.36 user=vsftpd passwd=123456 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2account required pam_mysql.so host=10.1.252.36 user=vsftpd passwd=123456 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
配置vsftpd启用虚拟用户,并使用指定的pam service:vsftpd.conf
//并确保pam_service_name选项的值如下所示pam_service_name=vsftpd.mysqluserlist_enable=YEStcp_wrappers=YESguest_enable=YESguest_username=vuser
配置每虚拟用户拥有不同的权限:vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_conf
为每个用户单独提供配置文件
[root@localhost ~]# mkdir /etc/vsftpd/vusers_conf[root@localhost ~]# cd /etc/vsftpd/vusers_conf/[root@localhost vusers_conf]# touch tom[root@localhost vusers_conf]# vim tomanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES
[root@localhost ~]# ftp 10.1.252.97Connected to 10.1.252.97 (10.1.252.97).220 (vsFTPd 2.2.2)Name (10.1.252.97:root): tom331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp& ls227 Entering Passive Mode (10,1,252,97,44,23).150 Here comes the directory listing.drwxr-xr-x 2 500 500 4096 Jul 25 01:47 51ctodrwx------ 2 501 501 4096 Jul 25 02:17 iiidrwxr-xr-x 2 500 500 4096 Jul 25 01:45 zabbix226 Directory send OK.ftp&
控制用户登录
1、编辑vsftpd.conf文件
userlist_enable=YESuserlist_file=/etc/vsftpd/ftpuser_list
[root@localhost vsftpd]# vim user_list或者:vim /etc/vsftpd/ftpuser_listhaltmailnewsuucpoperatorgamesnobodytom //添加禁止登录的用户
2、登录测试
[root@localhost ~]# ftp 10.1.252.97Connected to 10.1.252.97 (10.1.252.97).220 (vsFTPd 2.2.2)Name (10.1.252.97:root): tom530 Permission denied.Login failed.ftp& ls530 Please login with USER and PASS.Passive mode refused.ftp&
设置欢迎信息
用户登录欢迎信息
1、修改vsftpd.conf,并重载服务
ftpd_banner=Welcome to blah mageedu@ftp service.[root@localhost vsftpd]# service vsftpd reload
[root@localhost ~]# ftp 10.1.252.97Connected to 10.1.252.97 (10.1.252.97).220 Welcome to blah mageedu@ftp service.Name (10.1.252.97:root): tom
登录信息写入文件
1、修改vsftpd.conf文件
#ftpd_banner=Welcome to blah mageedu@ftp service.banner_file=/etc/vsftpd/banner.txt
2、添加欢迎信息文件
[root@localhost vsftpd]# cat banner.txt ************************************************** ** Welocome to Mageedu FTP server ** **************************************************
[root@localhost ~]# ftp 10.1.252.97Connected to 10.1.252.97 (10.1.252.97).220-*************************************************220-* *220-* Welocome to Mageedu FTP server *220-* *220-*************************************************220 Name (10.1.252.97:root):
目录欢迎信息
1、编译vsftpd.conf文件
dirmessage_enable=YES
2、在文件目录下创建欢迎信息文件并重载服务
[root@localhost vsftpd]# cat /var/www/html/.message 欢迎进入ftp根目录[root@localhost html]# service vsftpd reload
Name (10.1.252.97:root): tom331 Please specify the password.Password:230-欢迎进入ftp根目录230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.
[root@localhost ~]# cat /var/log/xferlog Mon Jul 25 09:13:36 .1.252.96 0 /pub/1.txt b _ o a lftp@ ftp 0 * c//提示时间:从10.1.252.96访问:访问的文件:b是二进制传输方式:o是服务器到客户端:a表示匿名Mon Jul 25 09:19:49 .1.252.96 79 /pub/issue b _ i a lftp@ ftp 0 * c//提示时间:从10.1.252.96访问:访问的文件:b是二进制传输方式:i是客户端到服务端:a表示匿名Mon Jul 25 09:46:01 .1.250.64 49451 /var/www/html/Linux_Services_and_Security.txt b _ i r zhanghe ftp 0 * c提示时间:从10.1.252.64访问:访问的文件:b是二进制传输方式:i是客户端到服务端:r表示真实用户:服务名ftp:认证方式0表示无:*无法获取用户ID:c表示传输已完成[root@localhost ~]#
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'管理命令ip命令配置网络属性:ip命令,不过该命令的操作只是临时操作,重启以后配置丢失ip-show / manipulate routing, devices, policy routing and tunnelsip [ OPTIONS ] OBJECT {
| help }&&&&&& &OBJECT := { link | addr | route }示例:& &ip link -
device configuration&&&&set dev IFACE&&&&可设置属性:&&&&&&&&up and down:激活或禁用指定&&&&&&&&ifup/ifdown&&&&&&&&show [dev IFACE]:指定接口&&&&&& [up]:仅显示处于激活状态的接口示例1:显示所有接口的状态650) this.width=650;" src="/upload/images//421.png" title="30.png" alt="wKiom1fPzc3D7Tk7AABA7dqvzYQ295.png" />示例2:关闭eth1口,然后显示eth1接口的状态,而后显示其他状态是up的接口650) this.width=650;" src="/upload/images//422.png" title="32.png" alt="wKiom1fP0KqQGnEVAABfZHPOyic966.png" />650) this.width=650;" src="/upload/images//423.png" title="33.png" alt="wKiom1fP2CuTrWgAAAAjOQyeE5U978.png" />ip addr { add | del | change } IFADDR dev STRING&&&&[label LABEL]:添加地址时指明网卡别名&&&&[scope {global|link|host}]:指明作用域&&&&&&&&global: 全局可用;&&&&&&&&link: 仅链接可用;&&&&&&&&host: 本机可用;&&&&[broadcast ADDRESS]:指明广播地址ip address show -look at protocol addresses&&&&[dev DEVICE]&&&&[label PATTERN]&&&&[primary and secondary]ip address flush -使用格式同showip addr add 172.16.0.100/16 dev eth2 label eth2ip addr del 172.16.0.100/16 dev eth2 label eth2ip addr flush dev eth2 label eth2示例1:使用ip addr命令添加一个ip650) this.width=650;" src="/upload/images//424.png" title="34.png" alt="wKiom1fP3E-he7uNAAC4j9UR8j0274.png" />示例2:改变eth2的650) this.width=650;" src="/upload/images//425.png" title="35.png" alt="wKiom1fP3XDDTbCWAACRFOsjy8A532.png" />示例3:删除eth2的ip信息650) this.width=650;" src="/upload/images//426.png" title="37.png" alt="wKiom1fP3yGjd6nCAABOs20m22w900.png" />示例4:此命令不会保存在中,只是暂时存放在内存里面,使用请注意650) this.width=650;" src="/upload/images//427.png" title="36.png" alt="wKiom1fP30eBl5mAAABdiuq2um8208.png" />ip route - routing table management&&&&添加:ip route add& & & & &&&ip route add TARGET via GW dev IFACE srcSOURCE_IP& & & & & & TARGET:&&&&&&&&&&&&主机路由:IP&&&&&&&&&&&&网络路由:NETWORK/MASK&&&&&&&&ip route add 192.168.0.0/24 via 172.16.0.1&&&&&&&&ip route add 192.168.1.13 via 172.16.0.1&&&&添加网关:ip route add default via GW dev IFACE&&&&&&&&&ip route add default via 172.16.0.1&&&&&删除路由:ip route delete&&&&&&&&&ip route del TARGET&&&&显示路由:ip route show|list&&&&清空路由表:ip route flush [dev IFACE] [via PREFIX]&&&&&&&&&&ip route flush dev eth0示例1:添加172.16.0.0/16的路由650) this.width=650;" src="/upload/images//428.png" title="38.png" alt="wKiom1fP-SbDyG9XAABkd_gqtYo117.png" />示例2:添加一个网关650) this.width=650;" src="/upload/images//429.png" title="39.png" alt="wKioL1fP-suQVPyZAABAjaZGsl0334.png" />示例3:删除默认网关路由650) this.width=650;" src="/upload/images//4210.png" title="40.png" alt="wKiom1fP-oLBZNbFAAA5z1Pu-ew143.png" />示例4:删除相关的所有路由650) this.width=650;" src="/upload/images//4211.png" title="42.png" alt="wKiom1fQAUqxHmGIAAANGaT0zx0479.png" />netstat命令:显示网络链接Print network connections, routing tables,
statistics, masquerade connections, and multicast memberships、常用选项:& &-t: tcp协议相关& &-u: udp协议相关& &-w: raw socket相关& &-l: 处于监听状态& &-a: 所有状态& &-n: 以数字显示IP和端口;& &-e:扩展格式& &-p: 显示相关进程及PID常用组合:-tan, -uan, -tnl, -unl,-rn,tnlp显示路由表:netstat {--route|-r} [--numeric|-n]& &-r: 显示内核路由表& &-n: 数字格式显示接口统计数据:netstat{--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]# netstat -i# netstat -IIFACE示例1:查看所有tcp协议的状态650) this.width=650;" src="/upload/images//4212.png" title="66.png" alt="wKioL1fPwsWSlGuJAADR8tYJZLs130.png" />示例2:查看所有udp的协议状态650) this.width=650;" src="/upload/images//4213.png" title="25.png" alt="wKioL1fPylzTkqRtAAA975kMH64630.png" />示例3:查看所有正在监听的tcp协议650) this.width=650;" src="/upload/images//4214.png" style="float:" title="26.png" alt="wKiom1fPxf_D60wJAABeLsIfPWU229.png" />示例4:查看所有正在监听的udp协议650) this.width=650;" src="/upload/images//4215.png" title="27.png" style="float:" alt="wKioL1fPxgCC9P7AAAA9gzeXMQM097.png" />示例5:查看所有tcp和udp协议状态以及进程号650) this.width=650;" src="/upload/images//4216.png" title="29.png" alt="wKioL1fPxrvjVlK6AAC5EOuCj8g118.png" />ss命令格式:ss[OPTION]... [FILTER]netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息。选项:&&&&-t: tcp协议相关&&&&-u: udp协议相关&&&&-w: 裸套接字相关&&&&-x:unixsock相关&&&&-l: listen状态的连接&&&&-a: 所有&&&&-n: 数字格式&&&&-p: 相关的及PID&&&&-e: 扩展的信息&&&&-m:内存用量&&&&-o:计时器信息FILTER := [ state TCP-STATE ] [ EXPRESSION ]& TCP的常见状态:&&&&tcpfinite state machine:&&&&LISTEN: 监听&&&&ESTABLISHED:已建立的连接&&&&FIN_WAIT_1&&&&FIN_WAIT_2&&&&SYN_SENT&&&&SYN_RECV&&&&CLOSEDEXPRESSION:& dport=& sport =& 示例: ’( dport= :sshor sport = :ssh)’常用组合:-tan, -tanl, -tanlp, -uan,tunl常见用法示例:ss -l 显示本地打开的所有端口650) this.width=650;" src="/upload/images//4217.png" title="43.png" alt="wKioL1fQDc6BTqeIAABXY2eiEbc482.png" />ss -pl 显示每个进程具体打开的socket650) this.width=650;" src="/upload/images//4218.png" title="44.png" alt="wKiom1fQDjnz49SGAACgHpHhWZw043.png" />ss -t -a 显示所有tcp socket650) this.width=650;" src="/upload/images//4219.png" title="45.png" alt="wKioL1fQDnOQChyAAABchWfo18U454.png" />ss -u -a 显示所有的UDP Socekt650) this.width=650;" src="/upload/images//4220.png" title="46.png" alt="wKiom1fQEA-TBGqwAABAdJD6OGU519.png" />ss -o state established '( dport = :ssh or sport = :ssh )' 显示所有已建立的SSH连接650) this.width=650;" src="/upload/images//4221.png" title="47.png" alt="wKioL1fQEAaxpP5AAAAlBQDP6R4492.png" />ss -s 列出当前socket详细信息:650) this.width=650;" src="/upload/images//4222.png" title="49.png" alt="wKiom1fQD_6hUjEDAAAus2wAaHE057.png" />ss -o state established '( dport = :smtp or sport = :smtp )' 显示所有已建立的SMTP连接ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接ss -x src /tmp/.X11-unix/* 找出所有连接X的进程nmcli命令(注意,此命令只适用于CentOS 7的版本,6版本的这个命令并不好使)地址配置工具:nmclinmcli[ OPTIONS ] OBJECT { COMMAND | help }&&&&device -show and manage network interfaces&&&&nmcli device help&&&&connection -start, stop, and manage network connections&&&&nmcli connection help修改IP地址等属性:& &nmcli connection modify IFACE [+|-] setting.property value&&&&setting.property:&&&&ipv4.addressesipv4.gateway&&&&ipv4.dns1 ipv4.methodmanual | dhcp修改配置文件执行生效:ctl restart network&&&&&&&&&&&nmcli con reloadnmcli命令生效:nmcli con down eth0 ;nmcli con up eth0示例1:新增网卡,设置它的IP地址添加了一个新的网卡,系统自动识别为eth1,网卡名字Wired connetion 1,此处作用的是NetworkManager,否则新建一个网卡的时候应该没有名字。650) this.width=650;" src="/upload/images//4223.png" style="float:" title="52.png" alt="wKiom1fSZETylJ6KAAAuFAPoTAo047.png" />此处我清理掉上图的信息,此时查看接口的状态650) this.width=650;" src="/upload/images//4224.png" title="60.png" alt="wKioL1fUtzbAGap4AABOLHu9Ux4938.png" />添加网卡信息,设置该网卡为手动设置,配置ip地址,网关,dns,开机自动启动,此处会生成配置文件650) this.width=650;" src="/upload/images//4225.png" title="59.png" alt="wKioL1fUtGPx_b5_AADVHgm7wM0101.png" />配置完看了一下,ip已经起来了,连服务都没重启呢。并且测试过连通性也是没问题650) this.width=650;" src="/upload/images//4226.png" title="61.png" alt="wKioL1fUv0vCZhUEAABdVzJ0ZwY856.png" />650) this.width=650;" src="/upload/images//4227.png" title="62.png" alt="wKiom1fUwH6wGdU4AACS-IsZ9ng177.png" />示例2:新增绑定一个新的配置文件home和ip地址,但是我们发现,此处文件并没有绑定接口650) this.width=650;" src="/upload/images//4228.png" style="float:" title="63.png" alt="wKiom1fUwazArxdnAABXW57U9pM851.png" />此处用nmcli device status可以看见接口eht1已经是工作中,但是此命令不能看见接口绑定的是哪个配置文件,我们发现ip还是以前的ip650) this.width=650;" src="/upload/images//4229.png" style="float:" title="64.png" alt="wKiom1fUwa_zCkQUAABu4V9U6_I889.png" />此处用nmcli con up home的命令启用接口,然后我们发现eth1接口此时用的是home的配置文件,这样的话就可以把接口切换过来650) this.width=650;" src="/upload/images//4230.png" style="float:" title="65.png" alt="wKioL1fUwbPyIM7jAAChP24aclw003.png" />也可以用nmcli con down +conf文件这样方式来切换650) this.width=650;" src="/upload/images//4231.png" style="float:" title="66.png" alt="wKioL1fUwbTzhlsOAACiKEJP6U0844.png" />如果对以上的配置文件有需要自己改动的地方,则手动编辑之,然后输入nmcli con reload命令重新导入配置文件即可。例如编辑ip地址和网卡的NAME650) this.width=650;" src="/upload/images//4232.png" title="67.png" style="float:" alt="wKioL1fUxDrRfVUMAABKchA8z-w985.png" />编辑完,配置文件并不会马上生效,我们可以用nmcli con reload的命令重新加载配置文件,发现网卡的NAME属性已经生效,但是ip还是没有改变650) this.width=650;" src="/upload/images//4233.png" title="68.png" style="float:" alt="wKiom1fUxD3ifWEiAADakiamJCA552.png" />此处重启网络服务,ip已经起来了。650) this.width=650;" src="/upload/images//4234.png" title="69.png" style="float:" alt="wKioL1fUxEHjPSZCAABVzBSUK6s599.png" />相关工具网络接口配置tui工具:nmtui(nmcli的图形化工具,个人还是建议用命令的,此处不再演示)使用nmcli配置网络NeworkManager是管理和监控网络设置的守护进程设备即网络接口,连接是对网络接口的配置。一个网络接口可有多个连接配置,但同时只有一个连接配置生效。显示所有包括不活动连接nmclicon show显示所有活动连接nmclicon show –active显示配置nmclicon show "home"显示设备状态nmcli dev status显示网络接口属性nmclidev show eno(CentOS7的网卡的命名)创建新连接home,IP自动通过dhcp获取nmclicon add con-name home type Ethernet ifname eth1删除连接nmclicon del home创建新连接eth1 ,指定静态IP,不自动连接nmcticon add con-name static ifname eth1 autoconnect no type Ethernet ip4 10.1.156.71/16 gw4 10.1.0.1启用home连接配置nmcli con up home启用eth1连接配置nmclicon up eth1查看帮助nmclicon add help修改连接设置nmcli con mod “eth1” connection.autoconnect nonmcli con mod “eth1” ipv4.dns 10.1.0.1nmcli con mod “eth1” +ipv4.dns 8.8.8.8nmcli con mod “eth1” -ipv4.dns 8.8.8.8nmcli con mod “eth1” ipv4.addresses “172.16.0.100 172.16.0.1”nmcli con mod “eth1” +ipv4.addresses 10.10.10.10/16650) this.width=650;" src="/upload/images//4235.png" title="51.png" alt="wKioL1fQEp6wXTx8AADZwrHXyQo664.png" />650) this.width=650;" src="/upload/images//4236.png" title="49.png" alt="wKioL1fQEm-xWU4WAAFLjd09Ixs240.png" />设备配置被保存在中/etc/sysconfig/network-scripts/ifcfg-&name&帮助文档列出完整选项列表:/usr/share/doc/initcripts-*/sysconfig.txt650) this.width=650;" src="/upload/images//4237.png" title="50.png" alt="wKiom1fQEkTxznArAAC_aiuWwfY364.png" />修改连接配置后,需要重新加载配置nmcli con reloadnmcli con down “system eth0” 可被自动激活nmcli con up “system eth0”nmcli dev dis eth0 禁用网卡,访止被自动激活示例2:新增绑定一个新的配置文件home和ip地址,但是我们发现,此处文件并没有绑定接口650) this.width=650;" src="/upload/images//4228.png" title="63.png" style="float:" alt="wKiom1fUwazArxdnAABXW57U9pM851.png" />此处用nmcli device status可以看见接口eht1已经是工作中,但是此命令不能看见接口绑定的是哪个配置文件,我们发现ip还是以前的ip650) this.width=650;" src="/upload/images//4229.png" title="64.png" style="float:" alt="wKiom1fUwa_zCkQUAABu4V9U6_I889.png" />此处用nmcli con up home的命令启用接口,然后我们发现eth1接口此时用的是home的配置文件,这样的话就可以把接口切换过来650) this.width=650;" src="/upload/images//4230.png" title="65.png" style="float:" alt="wKioL1fUwbPyIM7jAAChP24aclw003.png" />也可以用nmcli con down +conf文件这样方式来切换650) this.width=650;" src="/upload/images//4231.png" title="66.png" style="float:" alt="wKioL1fUwbTzhlsOAACiKEJP6U0844.png" />如果对以上的配置文件有需要自己改动的地方,则手动编辑之,然后输入nmcli con reload命令重新导入配置文件即可。例如编辑ip地址和网卡的NAME650) this.width=650;" src="/upload/images//4232.png" title="67.png" style="float:" alt="wKioL1fUxDrRfVUMAABKchA8z-w985.png" />编辑完,配置文件并不会马上生效,我们可以用nmcli con reload的命令重新加载配置文件,发现网卡的NAME属性已经生效,但是ip还是没有改变650) this.width=650;" src="/upload/images//4233.png" title="68.png" style="float:" alt="wKiom1fUxD3ifWEiAADakiamJCA552.png" />此处重启网络服务,ip已经起来了。650) this.width=650;" src="/upload/images//4234.png" title="69.png" style="float:" alt="wKioL1fUxEHjPSZCAABVzBSUK6s599.png" />删除home的配置文件650) this.width=650;" src="/upload/images//4238.png" title="72.png" alt="wKiom1fUy66yUBCrAAA0KD_4NYI415.png" />修改网卡开机自动链接为nonmcli con mod “work” connection.autoconnect no650) this.width=650;" src="/upload/images//4239.png" title="73.png" alt="wKiom1fUzOzR4GPEAABS_JKIUH4467.png" />650) this.width=650;" src="/upload/images//4240.png" style="float:" title="74.png" alt="wKiom1fUzMuRwiUeAABvTOLDumg690.png" />设置DNS地址nmcli con mod “work” ipv4.dns 10.1.0.1650) this.width=650;" src="/upload/images//4241.png" title="75.png" alt="wKioL1fUzVewgABMAABxNCoRST0745.png" />增加一组DNS地址nmcli con mod “work” +ipv4.dns 8.8.8.8650) this.width=650;" src="/upload/images//4242.png" title="76.png" alt="wKioL1fUzbez-Q8gAAB_jIKvL-s692.png" />删除掉8.8.8.8的dnsnmcli con mod “work” -ipv4.dns 8.8.8.8650) this.width=650;" src="/upload/images//4243.png" title="77.png" style="float:" alt="wKiom1fUzybTx70MAABx25nTn8I765.png" />修改ip到其他地址nmcli con mod “work” ipv4.addresses “172.16.0.100/24 ipv4.gateway 172.16.0.1”650) this.width=650;" src="/upload/images//4244.png" title="78.png" style="float:" alt="wKiom1fUzyrhFf9kAAB69qQflc8456.png" />增加一个ip地址nmcli con mod “work” +ipv4.addresses 10.1.156.71650) this.width=650;" src="/upload/images//4245.png" style="float:" title="79.png" alt="wKioL1fUzzDCiu2vAAB_6aMpqBE233.png" />注意:以上的修改操作并不会马上生效,生效需要重启网卡服务systemctl restart network图形工具(此工具只能在图形界面下面启动)nm-connection-editor网络组Network Teaming(同样只适用于CentOS 7)网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量网络组不同于旧版中bonding,提供更好的性能和扩展性网络组由内核驱动和teamd守护进程实现.多种方式runnerbroadcast 广播roundrobin 循环activebackup 备份loadbalance 负载均衡lacp 接口聚合(implements the 802.3ad Link Aggregation Control Protocol)&网络组启动网络组接口不会自动启动网络组中的port接口启动网络组接口中的port接口不会自动启动网络组接口禁用网络组接口会自动禁用网络组中的port接口没有port接口的网络组接口可以启动静态IP连接启用DHCP连接时,没有port接口的网络组会等待port接口的加入创建网络组接口nmclicon add type team con-name CNAME ifname INAME [config JSON]& &CNAME为连接名,INAME为接口名& &JSON为指定runner方式& &格式:'{"runner": {"name": "METHOD"}}'& &METHOD可以是broadcast,roundrobin,activebackup,loadbalance,lacp.创建网络组接口实例首先创建网络组接口,名为team0的接口,模式为备份模式nmcli con add type team con-name team0 ifname team0&config ‘{"runner": {"name": "activebackup"}}'650) this.width=650;" src="/upload/images//4246.png" title="80.png" style="float:" alt="wKioL1fVDqSB9cdhAABYnBmdpZE252.png" />650) this.width=650;" src="/upload/images//4247.png" title="81.png" style="float:" alt="wKiom1fVDqbC_suKAAC7aFIGY2E838.png" />给接口配置ip地址等信息nmcli con mod team0 ipv4.addresses 10.1.156.156/16nmcli con mod team0 ipv4.method manual650) this.width=650;" src="/upload/images//4248.png" style="float:" title="82.png" alt="wKioL1fVDqeDvoIIAACAC49iMAI212.png" />创建port接口nmcli con add type team-slave con-name CNAME ifname INAME master TEAM&& &CNAME连接名,INAME网络接口名,TEAM网络组接口名.连接名若不指定,默认为team-slave-IFACE.nmcli device disconnect INAME 关闭指定的真实接口nmcli connection up CNAME&指定配置文件的接口up& &INAME设备名CNAME网络组接口名或port接口网络组实例nmcli con add type team-slave ifname eth0 master team0nmcli con add type team-slave ifname eth1 master team0 con-name team0-eth1nmcli con up team0 启用team0接口nmcli dev dis eth0 关闭掉原来的接口teamdctl team0 state650) this.width=650;" src="/upload/images//4249.png" title="83.png" alt="wKioL1fVHVGwzHOVAACNCrovp8w616.png" />650) this.width=650;" src="/upload/images//4250.png" title="93.png" alt="wKiom1fVHvbBQY6sAABSsAqQx2Y339.png" />完整示例:创建网络组首先创建网络组接口,名为team0的接口,模式为备份模式nmcli con add type team con-name team0 ifname team0&config ‘{"runner": {"name": "activebackup"}}'650) this.width=650;" src="/upload/images//4246.png" title="80.png" style="float:" alt="wKioL1fVDqSB9cdhAABYnBmdpZE252.png" />650) this.width=650;" src="/upload/images//4247.png" title="81.png" style="float:" alt="wKiom1fVDqbC_suKAAC7aFIGY2E838.png" />给接口配置ip地址等信息nmcli con mod team0 ipv4.addresses 10.1.156.156/16nmcli con mod team0 ipv4.method manual650) this.width=650;" src="/upload/images//4248.png" title="82.png" style="float:" alt="wKioL1fVDqeDvoIIAACAC49iMAI212.png" />创建port接口nmcli con add type team-slave con-name team0-eth0 ifname eth0 master team0nmcli con add type team-slave con-name team0-eth1 ifname eth1 master team0650) this.width=650;" src="/upload/images//4249.png" title="83.png" alt="wKioL1fVHVGwzHOVAACNCrovp8w616.png" />650) this.width=650;" src="/upload/images//4250.png" title="93.png" alt="wKiom1fVHvbBQY6sAABSsAqQx2Y339.png" />启用team0接口,但是可以看见port的接口的配置文件还没有生效650) this.width=650;" src="/upload/images//4251.png" title="94.png" alt="wKioL1fVIjvjjpwNAABpuVo2Sko560.png" />使port接口生效,有两种方法第一种:直接关闭掉原来的接口650) this.width=650;" src="/upload/images//4252.png" style="float:" title="84.png" alt="wKiom1fVHzmRxviSAAAJk75uJvY554.png" />第二种:直接nmcli connection up 指定port接口配置文件,此处用第二种650) this.width=650;" src="/upload/images//4253.png" style="float:" title="85.png" alt="wKioL1fVHzrhPYDvAAAPeftJ7l8507.png" />可以看见接口已经起来了650) this.width=650;" src="/upload/images//4254.png" style="float:" title="87.png" alt="wKiom1fVHzvwyOUpAAAcJxgMZbU264.png" />此时可以用teamdctl team0 state的命令来查看网络组接口的状态,发现接口已经起来了此时的主端口是eth1650) this.width=650;" src="/upload/images//4255.png" title="86.png" style="float:" alt="wKioL1fVHzvg42DCAAAT3Bwu03g764.png" />首先测试一下ping team0口来看看连通性,发现是通的650) this.width=650;" src="/upload/images//4256.png" style="float:" title="88.png" alt="wKiom1fVHz7STeYHAAEa5Sm6Sxs418.png" />此时断开eth1,然后再查询teamdctl team0 state命令可以看见eth1已经断开,此时作用的是eth0650) this.width=650;" src="/upload/images//4257.png" style="float:" title="89.png" alt="wKioL1fVHz-xST9AAAAVCILaKZg481.png" />重新链接eth1,再断开eth0,然后再查询teamdctl team0 state命令可以看见eth0已经断开,此时作用的是eth1650) this.width=650;" src="/upload/images//4258.png" style="float:" title="90.png" alt="wKiom1fVHz_BMZc4AAAVSZZ4R5M889.png" />最后,重新链接eth0,然后再查询teamdctl team0 state命令可以看见eth0已经链接上,此时作用的是eth1,此时实验完毕650) this.width=650;" src="/upload/images//4259.png" style="float:" title="91.png" alt="wKioL1fVH0CAe_f2AAAXQSDsWKw158.png" />写在最后:由于的关系,对此命令实现的效果有问题,所以后面测试的就不截图了,只保存接口状态的的截图了。如果需要测试接口的话,也可以用watch -n1 'netstat -Ieth0'和watch -n1 'netstat -Ieth1'同时查看接口的流量状态,可以发现是,只有active port的接口才会有流量,当actice port接口断开切换到另外一个接口的时候,另外一个接口才会有流量650) this.width=650;" src="/upload/images//4260.png" style="float:" title="92.png" alt="wKioL1fVH0ChhUk2AAAO1LdYdhQ239.png" />此时作用的是eth0,可以对比两个图,可以发现只有eth0接口的流量有变化650) this.width=650;" src="/upload/images//4261.png" style="float:" title="95.png" alt="wKioL1fVJWvzsuQRAACLXVUR-iY117.png" />此处关擦eth0接口的接收RX和发送TX流量变化650) this.width=650;" src="/upload/images//4262.png" style="float:" title="96.png" alt="wKiom1fVJWzTRtvNAACHpmSse5Y839.png" />使用nmcli配置主机名rhel6之前主机名配置文件:/etc/sysconfig/networkrhel7.0主机名配置文件:/etc/hostname ,默认没有这个文件,通过DNS反向解析获取主机名,主机名默认为:.localdomain显示主机名信息hostnamehostnamectl status创建并修改文件并生效hostnamectlset-hostname 删除文件,恢复主机名localhost.localdomainDNS设置,存放在/etc/resolv.conf文件中PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,不自动获取。等价于下面命令:nmclicon mod “system eth0” ipv4.ignore-auto-dns yes示例:设置主机名查看此时名状态,此时是centos.localdomain650) this.width=650;" src="/upload/images//4263.png" title="70.png" alt="wKiom1fUx-Pzze4QAABFB4PuCQ0993.png" style="float:" />改一个主机名,可以看见,马上生效了,这点比起CentOS6上面还是要方便不少650) this.width=650;" src="/upload/images//4264.png" title="71.png" alt="wKiom1fUx_CxlSQXAAB2E3VGNz0947.png" style="float:" />测试网络命令在命令行下测试网络的连通性显示主机名&&&&hostname测试网络连通性&&&&ping&&&&mtr显示正确的路由表&&&&ip route确定名称服务器使用:&&&&nslookup&&&&host&&&&dig跟踪路由&&&&traceroute&&&&Tracepath网络工具lftp, ftp, lftpget, wget&&&&lftp [-p port] [-u user[,password]] SERVER子命令:&&&&get、mget、ls、helplftp& &put &单个文件上传& &get &单个文件下载,可以补全,ftp的不能& &mget &多个东西下载,也可以支持补全,支持通配符& &mput &多个上传ftp FTP && 如果需要匿名登陆,可以使用anonymous或者ftp,密码是空密码或者随便一个&&pwd 显示在ftp里面的目录&&lcd 显示本机当前的位置&&&&lcd PATH:切换到其他的下载目录&&&&&&&&在ftp里面下载的东西的话默认会下载到lcd的目录& get 文件名:下载文件指令,如果文件名有空格,需要在文件名前后加上“”双引号& cd 切换目录&& passive 切换ftp的工作模式,默认是主动模式,通信时候使用端口20传文件,21收文件。&&&&& 被动模式的时候使用一个大端口号。& help 列出所有的在ftp里面的命令,非本地& quit 退出ftp和lftp都是交互式在ftp里面,需要对本地操作,可以再命令前面加上叹号!,如!pwd,作用同在ftp里面输入lcdftp 支持通配符ftp和lftp都是交互式,不能卸载脚本里面lftpget URL 下文件,并且支持多点续传,下载wget 可以下载ftp资源和http资源wget [option]... [URL]...&&&&NAME_A TO NAME_B 改名&&&&-q: 静默模式&&&&-c: 断点续传&&&&-O: 保存位置&&&&--limit-rates=: 指定传输速率links 连接,可以当& &links&url [option]&&&&--dump 抓取文字 ex.
& a.txt&&&&--source 抓取网站源码curl 网址 直接看源码&&&&-I 查看网站各种信息本文出自 “~微风~” ,请务必保留此出处http://wanweifeng./1779

我要回帖

更多关于 主动表被动 的文章

 

随机推荐