學習內容
網絡相關:ping, telnet, curl, netstat,修改hosts
個人總結
-
ping
簡述:
Linux 系統的ping 命令是常用的網絡命令,它通常用來測試與目標主機的連通性。比如:我們經常說的ping一下某主機看是否能夠訪問到、不能打開網頁的時候先ping 網關地址192.168.1.1嘗試默認網關是否能夠聯通。它通過發送ICMP ECHO_REQUEST數據包到網絡主機(send ICMP ECHO_REQUEST to network hosts),并顯示響應情況,這樣我們就可以根據它輸出的信息來確定目標主機是否可訪問(但這不是絕對的)。有些服務器為了防止通過ping探測到,通過防火墻設置了禁止ping或者在內核參數中禁止ping,這樣就不能通過ping確定該主機是否還處于開啟狀態.
命令格式:
ping [參數] [主機名或IP地址]
功能:
- 確定網絡和各外部主機的狀態;
- 跟蹤和隔離硬件和軟件問題;
- 測試、評估和管理網絡。
如果主機正在運行并連在網上,它就對回送信號進行響應。每個回送信號請求包含一個網際協議(IP)和 ICMP 頭,后面緊跟一個 tim 結構,以及來填寫這個信息包的足夠的字節。缺省情況是連續發送回送信號請求直到接收到中斷信號(Ctrl-C)。
參數:
-d 使用Socket的SO_DEBUG功能。
-f 極限檢測。大量且快速地送網絡封包給一臺機器,看它的回應。
-n 只輸出數值。
-q 不顯示任何傳送封包的信息,只顯示最后的結果。
-r 忽略普通的Routing Table,直接將數據包送到遠端主機上。通常是查看本機的網絡接口是否有問題。
-R 記錄路由過程。
-v 詳細顯示指令的執行過程。
<p>-c 數目:在發送指定數目的包后停止。
-i 秒數:設定間隔幾秒送一個網絡封包給一臺機器,預設值是一秒送一次。
-I 網絡界面:使用指定的網絡界面送出數據包。
-l 前置載入:設置在送出要求信息之前,先行發出的數據包。
-p 范本樣式:設置填滿數據包的范本樣式。
-s 字節數:指定發送的數據字節數,預設值是56,加上8字節的ICMP頭,一共是64ICMP數據字節。
-t 存活數值:設置存活數值TTL的大小。
實例:
- ping 不通的情況
? ~ ping 192.168.1.99
PING 192.168.1.99 (192.168.1.99) 56(84) bytes of data.
From 192.168.1.196 icmp_seq=1 Destination Host Unreachable
From 192.168.1.196 icmp_seq=2 Destination Host Unreachable
From 192.168.1.196 icmp_seq=3 Destination Host Unreachable
From 192.168.1.196 icmp_seq=4 Destination Host Unreachable
From 192.168.1.196 icmp_seq=5 Destination Host Unreachable
From 192.168.1.196 icmp_seq=6 Destination Host Unreachable
From 192.168.1.196 icmp_seq=7 Destination Host Unreachable
From 192.168.1.196 icmp_seq=8 Destination Host Unreachable
From 192.168.1.196 icmp_seq=9 Destination Host Unreachable
^C
--- 192.168.1.99 ping statistics ---
12 packets transmitted, 0 received, +9 errors, 100% packet loss, time 11064ms
pipe 3
- ping 通的情況
? ~ ping 192.168.1.123
PING 192.168.1.123 (192.168.1.123) 56(84) bytes of data.
64 bytes from 192.168.1.123: icmp_seq=1 ttl=128 time=1.65 ms
64 bytes from 192.168.1.123: icmp_seq=2 ttl=128 time=0.844 ms
64 bytes from 192.168.1.123: icmp_seq=3 ttl=128 time=0.959 ms
64 bytes from 192.168.1.123: icmp_seq=4 ttl=128 time=0.736 ms
64 bytes from 192.168.1.123: icmp_seq=5 ttl=128 time=0.732 ms
^C
--- 192.168.1.123 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4002ms
rtt min/avg/max/mdev = 0.732/0.984/1.653/0.346 ms
- ping 網關
? ~ ping -b 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.211 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.225 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.222 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.182 ms
64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=0.464 ms
64 bytes from 192.168.1.1: icmp_seq=6 ttl=64 time=0.224 ms
^C
--- 192.168.1.1 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 4999ms
rtt min/avg/max/mdev = 0.182/0.254/0.464/0.096 ms
- ping 指定次數
? ~ ping -c 3 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.22 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.360 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.382 ms
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.360/0.654/1.221/0.401 ms
- ping 指定時間間隔
? ~ ping -i 0.5 192.168.1.123
PING 192.168.1.123 (192.168.1.123) 56(84) bytes of data.
64 bytes from 192.168.1.123: icmp_seq=1 ttl=128 time=1.14 ms
64 bytes from 192.168.1.123: icmp_seq=2 ttl=128 time=0.999 ms
64 bytes from 192.168.1.123: icmp_seq=3 ttl=128 time=0.822 ms
64 bytes from 192.168.1.123: icmp_seq=4 ttl=128 time=0.952 ms
64 bytes from 192.168.1.123: icmp_seq=5 ttl=128 time=0.847 ms
64 bytes from 192.168.1.123: icmp_seq=6 ttl=128 time=0.957 ms
64 bytes from 192.168.1.123: icmp_seq=7 ttl=128 time=0.848 ms
^C
--- 192.168.1.123 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.822/0.938/1.141/0.103 ms
- ping 指定時間間隔和指定次數
? ~ ping -c5 -i 0.5 192.168.1.123
PING 192.168.1.123 (192.168.1.123) 56(84) bytes of data.
64 bytes from 192.168.1.123: icmp_seq=1 ttl=128 time=0.775 ms
64 bytes from 192.168.1.123: icmp_seq=2 ttl=128 time=0.941 ms
64 bytes from 192.168.1.123: icmp_seq=3 ttl=128 time=0.888 ms
64 bytes from 192.168.1.123: icmp_seq=4 ttl=128 time=0.761 ms
64 bytes from 192.168.1.123: icmp_seq=5 ttl=128 time=0.991 ms
--- 192.168.1.123 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.761/0.871/0.991/0.092 ms
- ping 公網上站點
? ~ ping -c 5 www.sina.com
PING cernetnews.sina.com.cn (121.194.0.239) 56(84) bytes of data.
64 bytes from 121.194.0.239: icmp_seq=1 ttl=50 time=21.3 ms
64 bytes from 121.194.0.239: icmp_seq=2 ttl=50 time=18.7 ms
64 bytes from 121.194.0.239: icmp_seq=3 ttl=50 time=17.8 ms
64 bytes from 121.194.0.239: icmp_seq=4 ttl=50 time=19.7 ms
64 bytes from 121.194.0.239: icmp_seq=5 ttl=50 time=18.3 ms
--- cernetnews.sina.com.cn ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 17.860/19.218/21.344/1.248 ms
- ping 多參數使用
? ~ ping -i 0.5 -c 5 -s 512 -t 255 192.168.1.123
PING 192.168.1.123 (192.168.1.123) 512(540) bytes of data.
520 bytes from 192.168.1.123: icmp_seq=1 ttl=128 time=1.64 ms
520 bytes from 192.168.1.123: icmp_seq=2 ttl=128 time=1.05 ms
520 bytes from 192.168.1.123: icmp_seq=3 ttl=128 time=1.68 ms
520 bytes from 192.168.1.123: icmp_seq=4 ttl=128 time=1.45 ms
520 bytes from 192.168.1.123: icmp_seq=5 ttl=128 time=1.66 ms
--- 192.168.1.123 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 1.051/1.500/1.683/0.239 ms
-
telnett
簡述:
telnet命令通常用來遠程登錄。 telnet程序是基于TELNET協議
的遠程登錄客戶端程序
。Telnet協議是TCP/IP協議族中的一員
,是Internet遠程登陸服務的標準協議和主要方式
。它為用戶提供了在本地計算機上完成遠程主機工作的 能力。在終端使用者的電腦上使用telnet程序,用它連接到服務器。終端使用者可以在telnet程序中輸入命令,這些命令會在服務器上運行,就像直接在服務器的控制臺上輸入一樣??梢栽诒镜鼐湍芸刂品掌鳌R_始一個 telnet會話,必須輸入用戶名和密碼來登錄服務器。Telnet是常用的遠程控制Web服務器的方法。
但是,telnet因為采用明文傳送報文,安全性不好,很多Linux服務器都不開放telnet服務,而改用更安全的ssh方式了。但仍然有很多別的系統可能采用了telnet方式來提供遠程登錄,因此弄清楚telnet客戶端的使用方式仍是很有必要的。
telnet命令還可做別的用途,比如確定遠程服務的狀態,比如確定遠程服務器的某個端口是否能訪問。
命令格式
telnet [參數][主機]
功能
執行 telnett 命令開啟終端機器階段作業,并登入遠端主機。
參數
-8 允許使用8位字符資料,包括輸入與輸出。
-a 嘗試自動登入遠端系統。
-b<主機別名> 使用別名指定遠端主機名稱。
-c 不讀取用戶專屬目錄里的.telnetrc文件。
-d 啟動排錯模式。
-e<脫離字符> 設置脫離字符。
-E 濾除脫離字符。
-f 此參數的效果和指定"-F"參數相同。
-F 使用Kerberos V5認證時,加上此參數可把本地主機的認證數據上傳到遠端主機。
-k<域名> 使用Kerberos認證時,加上此參數讓遠端主機采用指定的領域名,而非該主機的域名。
-K 不自動登入遠端主機。
-l<用戶名稱> 指定要登入遠端主機的用戶名稱。
-L 允許輸出8位字符資料。
-n<記錄文件> 指定文件記錄相關信息。
-r 使用類似rlogin指令的用戶界面。
-S<服務類型> 設置telnet連線所需的IP TOS信息。
-x 假設主機有支持數據加密的功能,就使用它。
-X<認證形態> 關閉指定的認證形態。
實例
zhyingjia@zhyingjia-Inspiron-5437:~$ telnet 192.168.1.243 22
Trying 192.168.1.243...
Connected to 192.168.1.243.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3
Protocol mismatch.
Connection closed by foreign host.
-
curl
簡述:curl是一個利用URL規則在命令行下工作的文件傳輸工具。它支持文件的上傳和下載,所以是綜合傳輸工具,但按傳統,習慣稱url為下載工具。
參數:
參數太多啦, 用的時候在搜~
實例: - 抓取頁面內容
curl -o/--output filename link
把輸出寫到該文件中。
curl -O url
后面的url要具體到某個文件,不然抓不下來。我們還可以用正則來抓取東西
? newDir ls
? newDir curl -o shouhui.html http://www.lxweimin.com/p/5dcce74fc415
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 41120 100 41120 0 0 82488 0 --:--:-- --:--:-- --:--:-- 82404
? newDir ls
shouhui.html
? newDir
? newDir curl -O http://www.lxweimin.com/p/5ead3cfb630b
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 47028 100 47028 0 0 97k 0 --:--:-- --:--:-- --:--:-- 97k
? newDir ls
5ead3cfb630b shouhui.html
? newDir
- 模擬登錄
curl -c <file>
操作結束后把cookie寫入到這個文件中
curl -F <name=content>
模擬http表單提交數據
? newDir curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://www.2cto.com /wp-login.php
<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx</center>
</body>
</html>
curl: (3) <url> malformed
- 顯示下載進度條
curl -#
? newDir ls
5ead3cfb630b shouhui.html
? newDir curl -O -# http://www.lxweimin.com/p/230efbd68016
######################################################################## 100.0%
? newDir ls
230efbd68016 5ead3cfb630b shouhui.html
? newDir
- 斷點續傳
curl -C -O url
下載比較打的文件可以使用-C
.
-
netstat
簡述 :
netstat命令
用于顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用于檢驗本機各端口的網絡連接情況。netstat是在內核中訪問網絡及相關信息的程序,它能提供TCP連接,TCP和UDP監聽,進程內存管理的相關報告.
常用參數:
netstat -a
顯示端口信息
netstat -nu
顯示當前UDP連接情況
netstat -apu
顯示當前UDP端口號使用情況
netstat -i
顯示網卡列表
netstat -g
顯示組播關系
netstat -l
顯示監聽的套接口
netstat -n
顯示多有已建立的連接
netstat -e
顯示關于以太網的統計數據
netstat -r
顯示路由表信息
netstat -at
列出所有TCP端口
實例:
- 無參數使用
netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 1 192.168.1.197:38870 www.google.com.gr:https SYN_SENT
tcp 1 1 192.168.1.197:48054 121.194.7.192:http LAST_ACK
tcp 0 1 192.168.1.197:38854 www.google.com.gr:https SYN_SENT
tcp 0 1 192.168.1.197:38860 www.google.com.gr:https SYN_SENT
tcp 0 1 192.168.1.197:38856 www.google.com.gr:https SYN_SENT
tcp 0 1 192.168.1.197:34186 prg03s05-in-f14.1:https SYN_SENT
tcp 1 1 192.168.1.197:36790 121.194.7.19:http LAST_ACK
tcp 0 1 192.168.1.197:38858 www.google.com.gr:https SYN_SENT
tcp 0 1 192.168.1.197:38880 www.google.com.gr:https SYN_SENT
tcp 0 1 192.168.1.197:38852 www.google.com.gr:https SYN_SENT
tcp 0 1 192.168.1.197:38864 www.google.com.gr:https SYN_SENT
tcp 0 1 192.168.1.197:38884 www.google.com.gr:https SYN_SENT
tcp 1 1 192.168.1.197:45486 23.248.163.147:http LAST_ACK
tcp 0 0 192.168.1.197:50202 hn.kd.ny.adsl:82 ESTABLISHED
... ...
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 22602 /run/user/1000/systemd/notify
unix 8 [ ] DGRAM 568 /run/systemd/journal/socket
unix 17 [ ] DGRAM 11639 /run/systemd/journal/dev-log
unix 2 [ ] DGRAM 11642 /run/systemd/journal/syslog
unix 3 [ ] SEQPACKET CONNECTED 31602 @0001b
unix 2 [ ] DGRAM 17911 /run/wpa_supplicant/wlp6s0
unix 3 [ ] DGRAM 556 /run/systemd/notify
unix 3 [ ] SEQPACKET CONNECTED 27350
unix 3 [ ] STREAM CONNECTED 26055 /run/systemd/journal/stdout
unix 3 [ ] STREAM CONNECTED 24124
unix 3 [ ] STREAM CONNECTED 23298 @/tmp/dbus-sYzUcwM148
unix 3 [ ] STREAM CONNECTED 25062 @/tmp/dbus-sYzUcwM148
unix 3 [ ] STREAM CONNECTED 22310
unix 3 [ ] STREAM CONNECTED 29561
unix 3 [ ] STREAM CONNECTED 23338 @/tmp/dbus-NFWQkgLokd
unix 3 [ ] STREAM CONNECTED 24598 @/tmp/.X11-unix/X0
... ...
說明:
netstat
命令輸出結果分為兩部分:
1. Active Internet connections : 有源 TCP 連接
Recv-Q : 接受隊列
Send-Q?。骸“l送隊列 (這兩列一般情況下為0,如果為1,則表示有軟件包在隊列中堆積)
2.Active UNIX domain sockets?。骸∮性矗眨危桑赜蛱捉涌?和網絡套接字一樣,但是只能用于本機通信,性能可以提高一倍)
Proto : 顯示連接使用的協議
RefCnt ?。? 表示連接到本套接口上的進程號
Types ?。? 顯示套接口的類型
State ?。骸★@示套接口當前的狀態
Path ?。骸”硎具B接到套接口的其它進程使用的路徑名
狀態字段說明
LISTEN:偵聽來自遠方的TCP端口的連接請求
SYN-SENT:再發送連接請求后等待匹配的連接請求(如果有大量這樣的狀態包,檢查是否中招了)
SYN-RECEIVED:再收到和發送一個連接請求后等待對方對連接請求的確認(如有大量此狀態,估計被flood攻擊了)
ESTABLISHED:代表一個打開的連接
FIN-WAIT-1:等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
FIN-WAIT-2:從遠程TCP等待連接中斷請求
CLOSE-WAIT:等待從本地用戶發來的連接中斷請求
CLOSING:等待遠程TCP對連接中斷的確認
LAST-ACK:等待原來的發向遠程TCP的連接中斷請求的確認(不是什么好東西,此項出現,檢查是否被攻擊)
TIME-WAIT:等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
CLOSED:沒有任何連接狀態
- 顯示端口信息
netstat -a
? ~ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:mysql *:* LISTEN
tcp 0 0 zhyingjia-Inspir:domain *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 1 192.168.1.197:39094 www.google.com.gr:https SYN_SENT
tcp 0 0 192.168.1.197:56872 106.75.2.241:http ESTABLISHED
tcp 0 1 192.168.1.197:39088 www.google.com.gr:https SYN_SENT
tcp 0 1 192.168.1.197:39092 www.google.com.gr:https SYN_SENT
tcp 1 1 192.168.1.197:45848 23.248.163.147:http LAST_ACK
tcp 0 1 192.168.1.197:39098 www.google.com.gr:https SYN_SENT
-
ssh
簡述:
安全外殼協議(SSH)是一種在不安全網絡上提供安全遠程登錄及其它安全網絡服務的協議。
命令格式:
ssh [-l login_name] [-p port] [user@]hostname
常用參數:
ssh -p port [user@]hostname
遠程登錄指定 IP 主機的端口
ssh -u login_name [user@]hostname
指定用戶
實例:
- 指定用戶
ssh -l long_name ip
ssh login_name@ip
? ~ ssh -l root 192.168.1.222
root@192.168.1.222's password:
BusyBox v1.20.2 () built-in shell (ash)
Enter 'help' for a list of built-in commands.
this board is EasyARM-iMX283
root@EasyARM-iMX28x ~#
? ~ ssh root@192.168.1.222
root@192.168.1.222's password:
BusyBox v1.20.2 () built-in shell (ash)
Enter 'help' for a list of built-in commands.
this board is EasyARM-iMX283
root@EasyARM-iMX28x ~#
- 指定端口(若不指定端口,ssh 命令默認登錄 22 端口)
ssh -l long_name -p port ip
ssh -p port login_name@ip
? ~ ssh -l root -p 22 192.168.1.222
root@192.168.1.222's password:
BusyBox v1.20.2 () built-in shell (ash)
Enter 'help' for a list of built-in commands.
this board is EasyARM-iMX283
root@EasyARM-iMX28x ~#
? ~ ssh -p 22 root@192.168.1.222
root@192.168.1.222's password:
BusyBox v1.20.2 () built-in shell (ash)
Enter 'help' for a list of built-in commands.
this board is EasyARM-iMX283
root@EasyARM-iMX28x ~#
- 更改 ssh 默認端口
1.修改配置文件?。?code>/etc/ssh/sshd_config
2.重啟服務 :service sshd restart
? ~ sudo vim /etc/ssh/sshd_config
// 修改端口
修改 Port 22 -> Port 23 :wq 保存并退出
? ~ cat /etc/ssh/sshd_config
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
Port 23
# Use these options to restrict which interfaces/protocols sshd will bind to
... ...
? ~ service sshd restart
? ~ ssh root@192.168.1.222
root@192.168.1.222's password:
BusyBox v1.20.2 () built-in shell (ash)
Enter 'help' for a list of built-in commands.
this board is EasyARM-iMX283
root@EasyARM-iMX28x ~#
-
scp
scp <file-name> <user-name>@<des-ip>:[des-path]
遠程傳輸文件
scp -r <dir-name> <user-name>@<des-ip>:[des-path]
遠程傳輸文件夾
// 發送方
[root@hadoop1 ~]# scp client1.c zhyingjia@192.168.1.196:
The authenticity of host '192.168.1.196 (192.168.1.196)' can't be established.
RSA key fingerprint is b4:8a:27:96:37:e5:27:4b:67:9f:6f:bc:51:c3:9e:f3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.196' (RSA) to the list of known hosts.
zhyingjia@192.168.1.196's password:
client1.c 100% 5320 5.2KB/s 00:00
[root@hadoop1 ~]# scp -r testDir/ zhyingjia@192.168.1.196:
zhyingjia@192.168.1.196's password:
[root@hadoop1 ~]# ls
// 接收前
? /home ls
zhyingjia
? /home cd zhyingjia
? ~ ls
Book IdeaProjects Public Videos
client1.c logs Ruby WebstormProjects
Desktop Music RubymineProjects wince3+1
Documents newDir sshd.txt
Downloads newRamlProject Templates
Pictures
// 接收后
? /home ls
zhyingjia
? /home cd zhyingjia
? ~ ls
Book IdeaProjects Public Videos
client1.c logs Ruby WebstormProjects
Desktop Music RubymineProjects wince3+1
Documents newDir sshd.txt
Downloads newRamlProject Templates
Pictures testDir
// 文件夾已經傳送過來。
參考
- 每天一個 Linux 命令:ping
http://www.cnblogs.com/peida/archive/2013/03/06/2945407.html - 每天一個Linux命令:telnet
http://www.cnblogs.com/peida/archive/2013/03/13/2956992.html - 每天一個Linux命令:netstat
http://www.cnblogs.com/peida/archive/2013/03/08/2949194.html