在這篇文章里,我們將要一睹能快速分析文本數(shù)據(jù)(如日志,報(bào)告等)的最方便工具。很多時(shí)候,我們需要的數(shù)據(jù)并不存儲(chǔ)在我們的本機(jī)上。所以首先,我們要知道如何鏈接到遠(yuǎn)程服務(wù)器上并使用它。為此,使用SSH最為合適。(SSH,即Secure Shell,是一個(gè)加密網(wǎng)絡(luò)協(xié)議,它能讓你在一個(gè)不安全的網(wǎng)絡(luò)上安全地遠(yuǎn)程登陸和使用其他網(wǎng)絡(luò)服務(wù))
在Ubuntu的終端你可以用以下幾個(gè)命令之一來(lái)登陸遠(yuǎn)程服務(wù)器。
在遠(yuǎn)程主機(jī)上執(zhí)行命令:
此時(shí),SSH 客戶端就已經(jīng)在Ubuntu的默認(rèn)程序列表中了。若沒有,你可以在終端嘗試以下命令。
1. 運(yùn)行PuTTY并輸入你的鏈接設(shè)置:
2. 點(diǎn)擊Open開啟一個(gè)SSH回話。
3. 當(dāng)打開SSH連接時(shí),你應(yīng)該會(huì)看到一個(gè)終端提示讓你輸入用戶名。
4. 接下來(lái),輸入密碼。需要注意的是,當(dāng)輸入密碼的時(shí),你不會(huì)看到游標(biāo)移動(dòng)或任何輸入字符(如**)。這是一個(gè)標(biāo)準(zhǔn)的PuTTY安全特性。點(diǎn)擊enter。
5. 現(xiàn)在你已經(jīng)可以在終端提示符下使用遠(yuǎn)程主機(jī)了。
SSH的一個(gè)好的特性是可以創(chuàng)建secure tunnels。
1. 將遠(yuǎn)程主機(jī)連接到本地
進(jìn)入主機(jī)1.1.1.1
獲得主機(jī)192.168.0.1的權(quán)限
操作:
-R 將遠(yuǎn)程主機(jī)(服務(wù)器)的某個(gè)端口轉(zhuǎn)發(fā)到本地端指定機(jī)器的指定端口。執(zhí)行遠(yuǎn)程重定向。當(dāng)你訪問(wèn)遠(yuǎn)程主機(jī)的這個(gè)端口,就會(huì)建立一個(gè)SSH隧道,并建立了通向這個(gè)主機(jī)端口的鏈接。
-N不執(zhí)行遠(yuǎn)程腳本或命令,只在前向端口時(shí)使用。
-f 經(jīng)過(guò)遠(yuǎn)程系統(tǒng)認(rèn)證后立即進(jìn)入后臺(tái)模式。
使用ssh隧道一個(gè)非常有用的方式就是用于這種通信加密。比如,你在一個(gè)開放的網(wǎng)絡(luò)中使用,但是你不想別人能夠攔截你的數(shù)據(jù)。
2. 將本地機(jī)(客戶機(jī))的某個(gè)端口轉(zhuǎn)發(fā)到遠(yuǎn)端指定機(jī)器的指定端口
在本機(jī)1.1.1.1輸入就會(huì)得到訪問(wèn)遠(yuǎn)程主機(jī)192.168.0.1的頁(yè)面。
操作:
-L 將本地機(jī)(客戶機(jī))的某個(gè)端口轉(zhuǎn)發(fā)到遠(yuǎn)端指定機(jī)器的指定端口。
反向隧道用于這種情況,你需要訪問(wèn)一臺(tái)被防火墻保護(hù)或處于NAT之后的主機(jī)。
在Connection -> SSH -> Tunnels,輸入
選擇”Dynamic”,點(diǎn)擊“Add”
在會(huì)話中輸入目標(biāo)主機(jī)地址并選擇SSH協(xié)議。通過(guò)手動(dòng)輸入已保存的會(huì)話名來(lái)保存你的選擇。例如:“HostName with ssh tunnel on 22”,點(diǎn)擊“保存”,雙擊會(huì)話名,連接成功。
當(dāng)SSH會(huì)話建立成功,你可以通過(guò)瀏覽器驗(yàn)證鏈接是否成功。
現(xiàn)在我們連上了主機(jī),已經(jīng)可以操作了。但是一些命令需要root權(quán)限。如果主機(jī)允許使用root權(quán)限,你可以在終端中執(zhí)行:
在輸入root用戶的密碼后,通過(guò)終端向遠(yuǎn)程主機(jī)的鏈接就會(huì)被確認(rèn),你也獲得了root權(quán)限:
我們知道了如何鏈接到主機(jī)和獲取必要權(quán)限的所有要點(diǎn),但這還不足以用來(lái)分析主機(jī)上的數(shù)據(jù)。接下來(lái)還要學(xué)習(xí)在遠(yuǎn)程主機(jī)上控制、數(shù)據(jù)獲取和獲取的基本命令。
現(xiàn)在,我們開始學(xué)習(xí)如何使用文件系統(tǒng)。以下是相應(yīng)的命令用來(lái):
1. 處理文件和文件夾
新建一個(gè)文件夾 dir_name
將dir_name重命名為dir_name2
刪除文件夾/文件
操作:
-r, -R 處理所有嵌套的子目錄。
-i 每一個(gè)傳輸鏈接移除之前需確認(rèn)
-f 若錯(cuò)誤是因文件不存在導(dǎo)致,則不以false結(jié)束,且不詢問(wèn)是否建立連接
刪除所有以file2015開頭的文件;*表示任意字符,你可以把它用在任何表示缺失字符的地方。
創(chuàng)建文件 file_name.txt
重命名文件
2. 權(quán)限
ls -la 查看目錄下所有文件、文件夾的連接情況及所有權(quán)
-l 關(guān)鍵的擴(kuò)展輸出
執(zhí)行file文件的權(quán)限
R 代表dir_name文件夾所有的文件
3. 所有者(Owner)/所屬群組(Group)
為file.txt文件設(shè)置所有者和群組
遞歸設(shè)置所有者和群組
4. 查看磁盤空間
顯示目前在Linux系統(tǒng)上的文件系統(tǒng)的磁盤使用情況
獲取文件夾大小
獲取文件夾和子目錄的大小
獲取文件大小
下面的命令可以用來(lái)獲取主機(jī)系統(tǒng)的狀態(tài):
查看內(nèi)存和交換空間的使用情況
實(shí)時(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況
現(xiàn)在我們已經(jīng)知道如何使用文件系統(tǒng)并獲得我們想要信息。不幸的是,在大部分情況下,這些信息都不便于人們理解。所以要考慮能方便數(shù)據(jù)分析的工具。
分析信息的第一步,就是找到信息。
通過(guò)這個(gè)命令可以用*符號(hào),如果全名太長(zhǎng)或者不知道,這時(shí)用
這個(gè)例子查詢主機(jī)上的認(rèn)證日志:
一旦找到了文件,通常情況下我們希望查看他們的內(nèi)容。
輸出文件內(nèi)容
將多個(gè)文件合并到制定目錄下的制定文件
除了對(duì)文件重定向,也可以對(duì)腳本和命令重定向
重定向輸出到文件(覆蓋文件)
和的文件內(nèi)容保存到/home/auth.log
從上面的輸出,我們可以看到,有許多冗余的信息。我們可以通過(guò)過(guò)濾來(lái)得到想要的信息。有一個(gè)非常有用的用法grep來(lái)處理這種情況。語(yǔ)法如下:
將cat的output信息過(guò)濾,這得到包含some_line的行
Grep也可以應(yīng)用到命令和腳本中
只輸出包含errors的字符串
通過(guò)sshd過(guò)濾,我們可以打印只關(guān)于ssh的認(rèn)證記錄
我們也可以跟蹤文件更改記錄。例如,當(dāng)你需要測(cè)試網(wǎng)頁(yè)時(shí),這將變得非常有用。所以當(dāng)你查詢?nèi)罩净蛘卟榭葱碌恼J(rèn)證記錄時(shí),你可以獲取到這樣的信息:
打印制定文件的第三方應(yīng)用的新記錄
也可以配合Grep來(lái)使用
打印包含error的新記錄
接下來(lái)讓我們看看tail做了什么。首先設(shè)置跟蹤文件
然后利用tail命令
在每個(gè)面向主機(jī)ssh的新連接建立以后,我們顯示相關(guān)信息和認(rèn)證記錄。
另一個(gè)用于分析文件的有用工具是awk. 利用它,我們可以很容易地處理任何一個(gè)文件結(jié)構(gòu)。Awk是用于語(yǔ)義搜索和編輯的工具。它可以看做成一種shell形式的awk。運(yùn)行awk程序有很多種方式。對(duì)于一個(gè)很短的程序,很容易將其加入運(yùn)行awk的命令,如下:
我們可以利用awk查看用戶何時(shí)連接或加入ssh
另外一個(gè)有用的命令是sed. 該命令將文件(默認(rèn)為標(biāo)準(zhǔn)輸入)復(fù)制到標(biāo)準(zhǔn)輸出,利用包含這些命令的腳本編輯這些文件。利用標(biāo)識(shí)符-f命令可以得到sfile文件的鏡像。如果只有-e script選項(xiàng),-e標(biāo)識(shí)符可以省略。默認(rèn)情況下-n標(biāo)識(shí)符無(wú)效。Script包含編輯命令,每個(gè)占一行,格式如下:
Sed命令循環(huán)將輸入字符串轉(zhuǎn)化,并輸出。
例子:
將report.txt文件中所有的John替換為Nick
等等。
下面介紹一下一些便于遠(yuǎn)程主機(jī)操作的有用的命令。Tar和zip對(duì)于文檔的操作會(huì)節(jié)省空間和流量。常用的命令如下:
對(duì)于tar:
c 用于從創(chuàng)建新的文檔
z 設(shè)置用gzip壓縮
f 設(shè)置文檔文件。
對(duì)于多級(jí)目錄:
x設(shè)置提取文檔
z設(shè)置利用gzip解壓
f設(shè)置文檔文件
對(duì)zip:
壓縮文件命令:
其中,-d指明目標(biāo)目錄。
當(dāng)然,遠(yuǎn)程主機(jī)的相關(guān)任務(wù)還需要本地電腦和遠(yuǎn)程主機(jī)之間的文件傳輸。下面的命令將幫助我們完成這些任務(wù):
從本機(jī)下載tar
利用awk命令我們已經(jīng)獲得用戶連接時(shí)間和斷開時(shí)間?,F(xiàn)在我們將這些保存在一個(gè)文件中,將其壓縮成tar文件并上傳:
通過(guò)這篇文章,我們可以看多CLI的多種用途和它是如何幫助我們進(jìn)行數(shù)據(jù)科學(xué)探究的。多數(shù)讀者肯定在搜索命令行上花了不少的時(shí)間。本文旨在幫助理解這些常用的基礎(chǔ)命令。
每一個(gè)指令都很有用,它們的合理組合將會(huì)形成一個(gè)非常強(qiáng)大指令?,F(xiàn)在你可以熟練運(yùn)用grep,sed和awk等命令。它們將會(huì)給你帶來(lái)很多機(jī)會(huì)。
我們希望了解更多讀者平時(shí)常用的指令,請(qǐng)?jiān)谙旅媪粞?,繼續(xù)學(xué)習(xí)這些指令,提升自我。好運(yùn)!
聯(lián)系客服