2016/7/3平時要用的一些命令記錄在此,未完待續。。。。。
2016/7/4 更~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
查看ip地址: Windows:ipconfig /all
Linux:ifconfig
ifdown禁用網卡;
ifup啟用網卡;
netstat:查詢網路狀態;
-t列出TCP協議連接埠;
-u列出UDP協議連接埠;
-n不使用網域名稱與服務名。而使用ip地址和連接埠號碼
-l僅列出在監聽狀態的網路服務
-a列出所有的網路連接
-tuln開了哪些連接埠,開了哪些服務
-an哪些連到我 all ,還可以查看相關的socket程式
netstat -an | grep ESTLABISH |wc -l
netstat -rn顯示路由列表,可以看到網關
route -n 查看網關
臨時設定網關
route add default gw 192.168.1.1
route del default gw
在一台伺服器裡,內網網卡不能設網關
nslookup翻譯網域名稱對應的ip
重啟服務 service network restat
nslookup >server
查看dns
ping 發送icmp的資料包,
windows ping4次終止;
Linux一直ping.
有的網站禁止ping,防止暴露資訊。
ping x.x.x.x -c 次數
telnet 遠端管理與連接埠探測命令
ssh是加密的,更加安全
telnet不用來遠端管理,可以連接埠探測
telnet x.x.x.x不加連接埠的話就是遠端管理,要求遠
程管理的機器開了Telnet服務。
加連接埠之後斷行符號如果有資訊提示的話表示對方電腦
要不沒有開Telnet服務,要不是開了防火牆把連接埠屏蔽了,如果沒有提示資訊,表示可以串連。
退出Ctrl+]退出
在win和Linux一致。
traceroute路由追蹤命令
-n使用ip不使用網域名稱更快
icmp協議,如果禁ping不能看到經過的節點。
下載命令wget 包
ftp協議和Telnet都是明文傳遞,檔案傳輸通訊協定,連接埠21,及其不安全。
tcpdump -i eth0 -nnX port 21
-i 指定的網卡介面;
-nn資料包中的網域名稱與服務轉為ip和連接埠
-X以十六進位和ascii碼顯示資料包的內容
port指定監聽的連接埠
抓包命令
http協議也不加密,在Linux下是明文
https協議才是加密
ssh協議
Xshell工具(遠端管理工具)
WinScp工具(檔案傳輸工具)
對稱式加密演算法(單密鑰):加密解密一個秘密;
壓縮公用程式壓縮的同時可以加密
非對稱式加密演算法
密碼產生公開金鑰和私密金鑰。
想讓誰看就讓誰的公開金鑰加密,使用自己的公開金鑰和想讓看的人的公開金鑰一起加密,保護髮送端的密碼安全使用密碼和私密金鑰一起解密
ssh安全殼層協議
保證資料轉送過程的安全,但是如果在傳遞之前就已經被竊取就沒辦法了
遠端管理指定Linux伺服器
ssh 使用者名稱@ip
使用者名稱不寫是以當前登入的使用者登入;
是否下載公開金鑰yes
exit退回本地
ls -a
顯示隱藏檔案
.開頭的是隱藏檔案
下載檔案
scp [-r] 使用者名稱@ip:檔案路徑 本地路徑
上傳檔案
scp [-r] 本地檔案 使用者名稱@ip:上傳路徑
上傳檔案不需要加-r,上傳目錄要加-r
SecureCRT(收費)
XShell遠端管理Linux的工具
WinSCP是Windows向Linux電腦傳遞資料的工具;後台協議是ssh加密協議。
SFTP協議
應用運行狀態監控指令碼
利用用戶端指令碼
mysqp,ab,mongo,php,jstack
nginxstatus,nagio-libexec
服務端介面支援
shell編程之Regex
正則是匹配檔案中合格字串;萬用字元用來匹配合格檔案名稱。
正則是包含匹配,輸出包含相應字元的整行;萬用字元是完全符合,輸出相應字元。 搜尋字串的命令grep、awk、sed等命令支援Regex;搜尋檔案的命令ls、find、cp不支援Regex,支援萬用字元。
基礎正則
*前面一個字元重複0次到多次,*前面加1個字元不起作用,必須在前面再加一個
e.g.
grep a* test.txt
匹配0個或者任意多個a的字元。
grep aa* test.txt
匹配至少一個a的字元
.匹配除了分行符號以外的任意一個字元
s..d匹配在s和d之間一定有兩個任一字元
.*匹配所有內容
^匹配行首,$匹配行尾
grep ^s test.txt
匹配以s作為行首的行
grep a$ test.txt
匹配以a作為行尾的行
^$匹配空白行
[]匹配中括弧中指定的任意一個字元,只匹配一個字元
e.g.
s[ao]id
匹配s和i中,要不是a,要不是o的字元
[0-9]
匹配任意一個數字
^[]代表以中括弧裡面字元作為行首的行
中括弧內的^代表取反
[^a-z]匹配不用小寫字母開頭的行
^[^a-zA-Z]
匹配不用字母開頭的行
Linux中不能直接A-z,應該a-zA-Z
\轉義符,讓特殊的符號喪失作用
\.$匹配以.結尾的行
.$匹配所有行
\{n\}表示其前面的字元恰好出現n次
但是正則是包含匹配,所以實際的匹配是至少出現n次
e.g.
a\{3\}匹配a連續出現3次的字串
[0-9]\{3\}
匹配包含連續的三個數位字串
\{n,\}表示其前面的字元出現不小於n次
e.g.
^[0-9]\{3,\}[a-z]
匹配最少用連續三個數字開頭的行
需要加定界符來更加精確的匹配
e.g.
grep "xc\{3\}u" test.txt
多練多實踐
\{n,m\}表示前面的字元至少出現n次,至多出現m次
e.g.
sa\{1,3\}i
匹配前一個字元a出現一次到3次,要加兩側的定界符才有效
vim清空,從游標所在行清空到行尾
d j
匹配ip地址
以下是從文檔中匹配ip,不能寫入正確的ip地址,因為ip是0-255
grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1-3\}\" test.txt
字元截取命令
cut [選項] 檔案名稱
-f列號:提取第幾列,
-d分隔字元:按照指定分隔字元分割列。預設的分割符是tab,當需要設定的時候加-d
cut -f 2,4 student.txt 提取2和4列
cut的局限
df -h | cut -f 1,3
df -h 的分隔字元是空格,不是cut預設的tab。當找不到分隔字元的時候,就認為分隔字元是在最後。
截取比較規律的檔案比較好,當採用不一致的數量的,空格作為分割符時,cut暈圈。
較為簡單
printf '輸出格式' 輸出內容
''不能省略
格式化輸出%ns輸出字串,n是數字代表輸出幾個字元; %ni輸出整數,n是數字指代輸出幾個數字;
%m.nf輸出浮點數,8.2f表示共輸出8位元,其中2位是小數,6位是整數。
\a輸出警告音
\b輸出退格鍵,就是backspace鍵
\f清除螢幕
\n換行
\r斷行符號,就是enter鍵
\t水平輸出退格鍵,就是Tab鍵
\v垂直輸出退格鍵,就是Tab鍵
只識別最原始的命令,需要把格式都寫出來
不支援資料流,grep.
awk
在awk輸出中支援print和printf命令。
print在每個輸出之後自動加入一個分行符號,Linux預設沒有print命令。
printf是標準格式輸出命令,並不會自動加入分行符號,需要換行,手工加入分行符號。不認識echo。
檔案中擷取需要的資料
awk '條件1{動作1}條件2{動作2}...' 檔案名稱
沒有條件代表無條件執行
關聯運算式作為條件;動作一般是格式化輸出和流程式控制制語句。
printf轉義符必須用雙引號括起來。
e.g.
awk '{printf $2 "\t" $4 "\n"}'student.txt
awk '{print $2 "\t" $4 }'student.txt
printf與print的區別,print會自動在行尾加分行符號
BEGIN END
FS=":"
內建變數,表示分隔字元是誰
手工指定分割符時一定要加begin
awk 'BEGIN{FS=":"}{print $1 "\t"$3}' student.txt
sed
字元替換命令
格式
sed [選項]‘[動作]’檔案名稱
選項
-n:一般sed命令會把資料都輸出到螢幕,加-n只會把經過sed命令處理的行輸出到螢幕
-e:允許對輸入資料應用多條sed命令編輯,多個命令之間用;分割
-i:用sed的修改結果直接修改讀取的檔案,而不是由螢幕輸出
動作
-a:追加,在當前行後添加一行或多行
-c:行替換,用c後面是字串替換原資料行
-i:插入,在當前行前插入一行或多行。
-d:刪除,刪除指定的行
-p:列印,輸出指定的行
-s:字元替換,用一個字串替換另外一個字串。格式為“行範圍s/舊字串/新字串/g”和vim中的替換格式類似
/g表示指定範圍內的多個都替換,不加只替換一個。
sed '2,4d' student.txt
表示刪除2到4行
字元處理命令
sort排序命令
選項
-f:忽略大小寫
-n:以數值型進行排序,預設使用字串排序
-r:反向排序
-t:指定分割符,預設是定位字元作為分隔字元
-k n[,m]:指定欄位範圍排序,從第n欄位開始,到m欄位截止。
wc統計命令
wc[選項] 檔案名稱
選項
-l:只統計行數
-w:只統計單詞數
-m:只統計字元數