点击链接加入 QQ 群 522720170(免费公开课, 视频应有尽有): https://jq.qq.com/?_wv=1027&k=5C08ATe
1 网络管理
1.1 Curl
Curl 是 Linux 下一个很强大的 http 命令行工具, 其功能十分强大.
1.1.1 读取网页
$ curl http://www.linuxidc.com
1.1.2 保存网页
- $ curl http://www.linuxidc.com> page.html
- $ curl -o page.html http://www.linuxidc.com
1.1.3 使用的 proxy 服务器及其端口: -x
$ curl -x 123.45.67.89:1080 -o page.html http://www.linuxidc.com
1.1.4 使用 cookie 来记录 session 信息
$ curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com
这个 option: -D 是把 http 的 response 里面的 cookie 信息存到一个特别的文件中去,
这样, 当页面被存到 page.html 的同时, cookie 信息也被存到了 cookie0001.txt 里面了
1.1.5 下一次访问的时候, 继续使用上次留下的 cookie 信息
使用 option 来把上次的 cookie 信息追加到 http request 里面去: -b
$ curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://www.linuxidc.com
1.1.6 浏览器信息
- $ curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com
- 1.1.7 referer
- $ curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -e "mail.linuxidc.com" -o page.html -D cookie0001.txt http://www.linuxidc.com
这样就可以骗对方的服务器, 你是从 mail.linuxidc.com 点击某个链接过来的
1.1.8 下载文件
- $ curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
- $ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
-O 可以按照服务器上的文件名, 自动存在本地
$ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG
1.1.9 批量下载
$ curl -O http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG
这样产生的下载, 就是
- ~zzh/001.JPG
- ~zzh/002.JPG
- ...
- ~zzh/201.JPG
- ~nick/001.JPG
- ~nick/002.JPG
- ...
- ~nick/201.JPG
1.1.10 自定义文件名的下载
curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG
这样, 自定义出来下载下来的文件名, 就变成了这样:
原来: ~zzh/001.JPG --> 下载后: 001-zzh.JPG 原来: ~nick/001.JPG --> 下载后: 001-nick.JPG
这样一来就不怕文件重名啦
1.1.11 断点续传
$ curl -c -O http://cgi2.tky.3wb.ne.jp/~zzh/screen1.JPG
分块下载, 我们使用这个 option 就可以了: -r
举例说明
比如我们有一个 http://cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 要下载 (赵老师的电话朗诵 :D ) 我们就可以用这样的命令:
- $ curl -r 0-10240 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 &
- $ curl -r 10241-20480 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 &
- $ curl -r 20481-40960 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 &
- $ curl -r 40961- -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3
这样就可以分块下载啦. 不过你需要自己把这些破碎的文件合并起来如果你用 UNIX 或苹果, 用 cat zhao.part*> zhao.MP3 就可以如果用的是 Windows, 用 copy /b 来解决吧, 呵呵
1.1.12 浏览 FTP
$ curl -u name:passwd ftp://ip:port/path/file
或者大家熟悉的
$ curl ftp://name:passwd@ip:port/path/file
1.1.13 FTP 上传
上传的 option 是 -T
比如我们向 ftp 传一个文件:
$ curl -T localfile -u name:passwd ftp://upload_site:port/path/
1.1.14 HTTP 上传
$ curl -T localfile http://cgi2.tky.3web.ne.jp/~zzh/abc.cgi
注意, 这时候, 使用的协议是 HTTP 的 PUT method
1.1.15 POST 模式读取网页
POST 模式的 option 则是 -d
比如,
$ curl -d "user=nickwolfe&password=12345" http://www.linuxidc.com/login.cgi
1.1.16 POST 模式下的文件上传
比如
- <form method="POST" enctype="multipar/form-data" action="http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi">
- <input type=file name=upload>
- <input type=submit name=nick value="go">
- </form>
这样一个 HTTP 表单, 我们要用 curl 进行模拟, 就该是这样的语法:
- $ curl -F upload=@localfile -F nick=go http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi
- 1.2 finger
1.2.1 功能说明
查找并显示用户信息.
1.2.2 语法
finger [-lmsp][帐号名称...]
1.2.3 补充说明
finger 指令会去查找, 并显示指定帐号的用户相关信息, 包括本地与远端主机的用户皆可, 帐号名称没有大小写的差别. 单独执行 finger 指令, 它会显示本地主机现在所有的用户的登陆信息, 包括帐号名称, 真实姓名, 登入终端机, 闲置时间, 登入时间以及地址和电话.
1.2.4 参数
-l 列出该用户的帐号名称, 真实姓名, 用户专属目录, 登入所用的 Shell, 登入时间, 转信地址, 电子邮件状态, 还有计划文件和方案文件内容.
-m 排除查找用户的真实姓名.
-s 列出该用户的帐号名称, 真实姓名, 登入终端机, 闲置时间, 登入时间以及地址和电话.
-p 列出该用户的帐号名称, 真实姓名, 用户专属目录, 登入所用的 Shell, 登入时间, 转信地址, 电子邮件状态, 但不显示该用户的计划文件和方案文件内容.
1.3 ftp
1.3.1 功能说明
设置文件系统相关功能.
1.3.2 语法
ftp [-dignv][主机名称或 IP 地址]
1.3.3 补充说明
FTP 是 ARPANet 的标准文件传输协议, 该网络就是现今 Internet 的前身.
1.3.4 参数
-d 详细显示指令执行过程, 便于排错或分析程序执行的情形.
-i 关闭互动模式, 不询问任何问题.
-g 关闭本地主机文件名称支持特殊字符的扩充特性.
-n 不使用自动登陆.
-v 显示指令执行过程.
1.4 ifconfig
1.4.1 功能说明
显示或设置网络设备.
1.4.2 语法
ifconfig [网络设备][down up -allmulti -arp -promisc][add < 地址>][del < 地址>][<hw < 网络设备类型><硬件地址>][io_addr<I/O 地址>][irq<IRQ 地址>][media < 网络媒介类型>][mem_start < 内存地址>][metric < 数目>][mtu < 字节>][netmask < 子网掩码>][tunnel < 地址>][-broadcast < 地址>][-pointopoint < 地址>][IP 地址]
1.4.3 补充说明
ifconfig 可设置网络设备的状态, 或是显示目前的设置.
如果提示找不到命令, 可用 / sbin/ifconfig.
1.4.4 参数
add < 地址> 设置网络设备 IPv6 的 IP 地址.
del < 地址> 删除网络设备 IPv6 的 IP 地址.
down 关闭指定的网络设备.
<hw < 网络设备类型><硬件地址> 设置网络设备的类型与硬件地址.
io_addr<I/O 地址> 设置网络设备的 I/O 地址.
irq<IRQ 地址> 设置网络设备的 IRQ.
media < 网络媒介类型> 设置网络设备的媒介类型.
mem_start < 内存地址> 设置网络设备在主内存所占用的起始地址.
metric < 数目> 指定在计算数据包的转送次数时, 所要加上的数目.
mtu < 字节> 设置网络设备的 MTU.
netmask < 子网掩码> 设置网络设备的子网掩码.
tunnel < 地址> 建立 IPv4 与 IPv6 之间的隧道通信地址.
up 启动指定的网络设备.
-broadcast < 地址> 将要送往指定地址的数据包当成广播数据包来处理.
-pointopoint < 地址> 与指定地址的网络设备建立直接连线, 此模式具有保密功能.
-promisc 关闭或启动指定网络设备的 promiscuous 模式.
[IP 地址] 指定网络设备的 IP 地址.
[网络设备] 指定网络设备的名称.
1.5 ip
1.5.1 功能说明
ip 是 iproute2 软件包里面的一个强大的网络配置工具, 它能够替代一些传统的网络管理工具. 例如: ifconfig,route 等.
1.5.2 语法
ip [选项] [动作] [指令]
1.5.3 参数
动作 := { link | addr | route | rule | neigh | tunnel | maddr | mroute | monitor }
选项 := { -V[ersion] | -s[tatistics] | -r[esolve] |-f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] }
1.5.4 装置介面 (device) 的相关设定: ip link
ip link 可以设定与装置 (device) 有关的相关设定, 包括 MTU 以及该网路介面的 MAC 等等, 当然也可以启动 (up) 或关闭 (down) 某个网路介面啦! 整个语法是这样的:
- [root@linux ~]# ip [-s] link show <== 单纯的查阅该装置相关的资讯
- [root@linux ~]# ip link set [device] [动作与参数]
参数:
show: 仅显示出这个装置的相关内容, 如果加上 -s 会显示更多统计数据;
set : 可以开始设定项目, device 指的是 eth0, eth1 等等介面代号;
动作与参数: 包括有底下的这些动作:
up|down : 启动 (up) 或关闭 (down) 某个介面, 其他参数使用预设的乙太网路;
address : 如果这个装置可以更改 MAC 的话, 用这个参数修改!
name : 给予这个装置一个特殊的名字;
mtu : 就是最大传输单元啊!
范例一: 显示出所有的介面资讯
- [root@linux ~]# ip link show
- 1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
- link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
- 2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
- link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff
- 3: sit0: <NOARP> mtu 1480 qdisc noop
- link/sit 0.0.0.0 brd 0.0.0.0
- [root@linux ~]# ip -s link show eth0
- 2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
484011792 2247372 0 0 0 0
TX: bytes packets errors dropped carrier collsns
2914104290 2867753 0 0 0 0
使用 ip link show 可以显示出整个装置介面的硬体相关资讯, 如上所示, 包括网卡位址(MAC),MTU 等等, 比较有趣的应该是那个 sit0 的介面了, 那个 sit0 的介面是用在 IPv4 及 IPv6 的封包转换上的, 对於我们仅使用 IPv4 的网路是没有作用的. lo 及 sit0 都是主机内部所自行设定的. 而如果加上 -s 的参数後, 则这个网路卡的相关统计资讯就会被列出来, 包括接收 (RX) 及传送 (TX) 的封包数量等等, 详细的内容与 ifconfig 所输出的结果相同的.
- [root@linux ~]# ip link set eth0 up
- # 启动 eth0 这个装置介面;
- [root@linux ~]# ip link set eth0 down
- # 阿就关闭啊! 简单的要命~
- [root@linux ~]# ip link set eth0 mtu 1000
- # 更改 MTU 的值, 达到 1000 bytes, 单位就是 bytes 啊!
- # 因为该装置目前是启动的, 所以不能这样做设定. 你应该要这样做:
- [root@linux ~]# ip link set eth0 down <== 关闭介面
- [root@linux ~]# ip link set eth0 name vbird <== 重新设定
- [root@linux ~]# ip link show <== 观察一下
- 2. vbird: <BROADCAST,MILTICASE> mtu 900 qdisc pfifo_fast qlen 1000
- # 怕了吧! 连网路卡代号都可以改变! 不过, 玩玩後记得改回来啊!
- # 因为我们的 ifcfg-eth0 还是使用原本的装置代号! 避免有问题, 要改回来
- [root@linux ~]# ip link set vbird name eth0 <== 介面改回来
- [root@linux ~]# ip link set eth0 address aa:aa:aa:aa:aa:aa
- [root@linux ~]# ip link show eth0
- # 如果你的网路卡支援硬体位址 (MAC) 可以更改的话,
- # 那么上面这个动作就可以更改你的网路卡位址了! 厉害吧!
- # 不过, 还是那句老话, 测试完之後请立刻改回来啊!
- [root@linux ~]# ip address show <== 就是查阅 IP 参数啊!
- [root@linux ~]# ip address [add|del] [IP 参数] [dev 装置名] [相关参数]
- [root@linux ~]# ip address show
- 1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
- link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
- inet 127.0.0.1/8 scope host lo
- inet6 ::1/128 scope host
- valid_lft forever preferred_lft forever
- 2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
- 3: sit0: <NOARP> mtu 1480 qdisc noop
- link/sit 0.0.0.0 brd 0.0.0.0
- [root@linux ~]# ip address add 192.168.50.50/24 broadcast +
- > dev eth0 label eth0:vbird
- [root@linux ~]# ip address show eth0
- inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
- inet 192.168.50.50/24 brd 192.168.50.255 scope global eth0:vbird
- # 看到上面的特殊字体了吧? 多出了一行新的介面, 且名称是 eth0:vbird
- # 至於那个 broadcast + 也可以写成 broadcast 192.168.50.255 啦!
- [root@linux ~]# ifconfig
- Interrupt:5 Base address:0x3e00
- # 如果使用 ifconfig 就能够看到这个怪东西了!
- [root@linux ~]# ip route show <== 单纯的显示出路由的设定而已
- [root@linux ~]# ip route [add|del] [IP 或网域] [via gateway] [dev 装置]
- [root@linux ~]# ip route show
- 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.2
- 169.254.0.0/16 dev eth1 scope link
- default via 192.168.1.254 dev eth1
- [root@linux ~]# ip route add 192.168.5.0/24 dev eth0
- # 针对本机直接沟通的网域设定好路由, 不需要透过外部的路由器
- [root@linux ~]# ip route show
- 192.168.5.0/24 dev eth0 scope link
- [root@linux ~]# ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0
- [root@linux ~]# ip route show
- 192.168.5.0/24 dev eth0 scope link
- 192.168.10.0/24 via 192.168.5.100 dev eth0
- # 仔细看喔, 因为我有 192.168.5.0/24 的路由存在 (我的网卡直接联系),
- # 所以才可以将 192.168.10.0/24 的路由丢给 192.168.5.100
- # 那部主机来帮忙传递喔! 与之前提到的 route 指令是一样的限制!
- [root@linux ~]# ip route add default via 192.168.1.2 dev eth0
- # 那个 192.168.1.2 就是我的预设路由器 (gateway) 的意思啊! ^_^
- # 真的记得, 只要一个预设路由就 OK !
- [root@linux ~]# ip route del 192.168.10.0/24
- [root@linux ~]# ip route del 192.168.5.0/24
- 1.6 netstat
- $ nslookup
- Default Server: name.cao.com.cn
- Address: 192.168.1.9
- >
- #route [-add][-net|-host] targetaddress [-netmask Nm][dev]If]
- #route [-delete][-net|-host] targetaddress [gw Gw] [-netmask Nm] [dev]If]
来源: http://www.bubuko.com/infodetail-2613512.html