写给文达,一位上进爱学习的90后IOS程序员。
用途:接口调试前检查网络和端口是否通畅。
命令:6个 ,掌握时间:30分钟
ifconfig #获取本机IP
ping 192.168.220.123 #检测本机到192.168.220.123网络是否通
telnet 192.168.220.123 8080 #检测本机到192.168.220.123的8080端口是否通
netstat #罗列本机已启动的应用和端口
systemctl status firewall #检测防火墙状态(适用centos7)
curl http://192.168.220.123:8080/index.jsp #检测是否可访问到url
- 获取本机IP
ifconfig
查IP这件事情,通常是这样的一个场景,SSH连接用的外网IP,但程序需用内网IP。
# ifconfig
em1 Link encap:Ethernet HWaddr 90:B1:1B:19:B6:EB
inet addr:192.168.220.123 Bcast:192.168.220.255 Mask:255.255.255.0
inet6 addr: fe80::92b1:1cff:fe19:b6ea/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:129506768 errors:1 dropped:922 overruns:0 frame:1
TX packets:168867967 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:23380501211 (21.7 GiB) TX bytes:84585884746 (78.7 GiB)
- 检测远程服务器
ping
重要:获取到对方提供的接口信息后,第一步确定接口是否通畅。
可分三个步骤:1)网络 2)端口 3)接口
如果网络不通,接下来所有的事情都无法做,很基础、很重要。
而且对方调整网络是需要时间的,所以不要等自己的接口好了才去看对方的是否准备好,而是对方一提供接口信息,第一步就是检测。
遇到N次对方的网络工程师发来了ip、port,没有做校验,一周后正式调试接口时发现网络是不通的,然后调整网络,这样一周就又过去啦。
#网络通畅
# ping 192.168.220.127
PING 192.168.220.127 (192.168.220.127) 56(84) bytes of data.
64 bytes from 192.168.220.127: icmp_seq=1 ttl=64 time=0.426 ms
64 bytes from 192.168.220.127: icmp_seq=2 ttl=64 time=0.259 ms
#网络不通
# ping 192.168.220.129
PING 192.168.220.129 (192.168.220.129) 56(84) bytes of data.
From 192.168.220.126 icmp_seq=1 Destination Host Unreachable
From 192.168.220.126 icmp_seq=2 Destination Host Unreachable
这里网络通就OK,如果不通,也不要慌,可能是对方禁ping啦,需进一步进行确认。
- 检测远程端口
telnet
不管是否可用ping通,都需要telnet测试下端口是否通。
# 端口通畅
# telnet 192.168.220.123 58082
Trying 192.168.220.123...
Connected to 192.168.220.123.
Escape character is '^]'.
#端口不通
# telnet 192.168.220.123 68082
Trying 192.168.220.123...
telnet: connect to address 192.168.220.123: Connection refused
端口不通时,直接联系对方。
端口通了,也不要高兴的太早,还需测试接口是否OK
- 检测url
wget http://192.168.220.123:8080/index.jsp
测试接口地址是否OK,最直观的方式就是访问。
本机和接口服务器网络通畅时可直接在IE上访问,但当本机和接口服务器的网络不可达时(通过跳板机可访问),就需要用到命令啦。
# curl http://192.168.220.126:9051/mock/services/ctms?wsdl
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="iptv" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="iptv" xmlns:intf="iptv" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)-->
<wsdl:types>
<schema targetNamespace="iptv" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="CSPResult">
<sequence>
<element name="Result" type="xsd:int"/>
......
到此,接口检测完成。
聪明的人,一定会问,我第一步就用curl 不就可以了吗?
是滴,是可以的。
当你curl不ok时,你才需要一步步去确认问题,知道是哪里不通,而不是仅仅知道接口不通。
- 检测本机已有应用和端口
netstat
考虑再三,还是放上这条命令。
netstat用途,用于查看已开启的端口
# netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 192.168.220.125:1521 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5586 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:2868 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
- 检测防火墙
systemctl status firewall
会经常遇到应用启动着,但是IE就是访问不了的问题。
需要检查下是不是防火墙开着,挡住了端口。
# 已启动
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since 二 2017-03-07 15:05:48 CST; 7s ago
Docs: man:firewalld(1)
Main PID: 97822 (firewalld)
Memory: 20.1M
CGroup: /system.slice/firewalld.service
└─97822 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
3月 07 15:05:48 chances127 systemd[1]: Starting firewalld - dynamic firewall daemon...
3月 07 15:05:48 chances127 systemd[1]: Started firewalld - dynamic firewall daemon.
# 已停止
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
如果防火墙已经启动,则要看已开始的端口有哪些
# firewall-cmd --permanent --zone=public --list-ports
22/tcp
如需要访问的端口不在其中,则可以通过以下命令来增加
#firewall-cmd --permanent --zone=public --add-port=3306/tcp
success
#firewall-cmd --permanent --zone=public --list-ports
3306/tcp 22/tcp
祝每个调接口的人,都能顺顺利利地进入调试阶段,将时间用在正事上,而是等待网络调整。文达,这对你有帮助吗?