在這篇文章里,,我們將要一睹能快速分析文本數(shù)據(jù)(如日志,,報告等)的最方便工具,。很多時候,我們需要的數(shù)據(jù)并不存儲在我們的本機上,。所以首先,,我們要知道如何鏈接到遠程服務(wù)器上并使用它。為此,,使用SSH最為合適,。(SSH,即Secure Shell,是一個加密網(wǎng)絡(luò)協(xié)議,,它能讓你在一個不安全的網(wǎng)絡(luò)上安全地遠程登陸和使用其他網(wǎng)絡(luò)服務(wù)) 在Ubuntu的終端你可以用以下幾個命令之一來登陸遠程服務(wù)器,。 $ ssh user@host$ ssh -p port host 通過密鑰鏈接: $ ssh -i key.pem user@host 在遠程主機上執(zhí)行命令: $ ssh -i key.pem user@host 'command' 此時,SSH 客戶端就已經(jīng)在Ubuntu的默認程序列表中了,。若沒有,,你可以在終端嘗試以下命令。 command sudo apt-get install ssh On Windows 若你使用微軟的Windows,,你需要安裝一款開源軟件PuTTY(地址http://www./)來使用SHH,。為了使用PuTTY鏈接,需要以下幾步:
On Ubuntu1. 將遠程主機連接到本地 進入主機1.1.1.1 ssh -f -N -R 22:192.168.0.1:22 [email protected] 獲得主機192.168.0.1的權(quán)限 $ ssh localhost 操作: --R --N --f 使用ssh隧道一個非常有用的方式就是用于這種通信加密,。比如,你在一個開放的網(wǎng)絡(luò)中使用,,但是你不想別人能夠攔截你的數(shù)據(jù),。 2. 將本地機(客戶機)的某個端口轉(zhuǎn)發(fā)到遠端指定機器的指定端口在本機1.1.1.1輸入http://localhost:80就會得到訪問遠程主機192.168.0.1的頁面。 ssh -f -N -L 80:192.168.0.1:80 [email protected] 操作: --L 反向隧道用于這種情況,,你需要訪問一臺被防火墻保護或處于NAT之后的主機。 使用PuTTY的SSH隧道功能
現(xiàn)在我們連上了主機,,已經(jīng)可以操作了。但是一些命令需要root權(quán)限,。如果主機允許使用root權(quán)限,,你可以在終端中執(zhí)行: $ sudo -s 在輸入root用戶的密碼后,通過終端向遠程主機的鏈接就會被確認,,你也獲得了root權(quán)限: 我們知道了如何鏈接到主機和獲取必要權(quán)限的所有要點,,但這還不足以用來分析主機上的數(shù)據(jù)。接下來還要學習在遠程主機上控制,、數(shù)據(jù)獲取和獲取的基本命令,。 使用文件系統(tǒng) 現(xiàn)在,我們開始學習如何使用文件系統(tǒng),。以下是相應(yīng)的命令用來: 1. 處理文件和文件夾 新建一個文件夾 dir_name mkdir dir_name 將dir_name重命名為dir_name2 mv dir_name dir_name2 刪除文件夾/文件 rm -rf dir_name 操作:
刪除所有以file2015開頭的文件,;*表示任意字符,你可以把它用在任何表示缺失字符的地方,。 rm -rf file2015* 創(chuàng)建文件 file_name.txt touch file_name.txt 重命名文件 mv file_name.txt file_name2.txt 2. 權(quán)限
執(zhí)行file文件的權(quán)限 chmod 777 file.sh R 代表dir_name文件夾所有的文件 chmod -R 777 dir_name - set access 777 recursively
3. 所有者(Owner)/所屬群組(Group) 為file.txt文件設(shè)置所有者和群組 chown ubuntu:ubuntu file.txt 遞歸設(shè)置所有者和群組 chown -R ubuntu:ubuntu dir_name 4. 查看磁盤空間 顯示目前在Linux系統(tǒng)上的文件系統(tǒng)的磁盤使用情況 df -h 獲取文件夾大小 du -sh dir_name/ 獲取文件夾和子目錄的大小 du -h dir_name/* 獲取文件大小 du -h filename 下面的命令可以用來獲取主機系統(tǒng)的狀態(tài):
現(xiàn)在我們已經(jīng)知道如何使用文件系統(tǒng)并獲得我們想要信息,。不幸的是,在大部分情況下,,這些信息都不便于人們理解,。所以要考慮能方便數(shù)據(jù)分析的工具。 分析信息的第一步,,就是找到信息。 find / var -name search _name 通過這個命令可以用*符號,,如果全名太長或者不知道,,這時用 find / var -name search_name* 這個例子查詢主機上的認證日志: 一旦找到了文件,通常情況下我們希望查看他們的內(nèi)容,。
除了對文件重定向,也可以對腳本和命令重定向
下一步保存文件內(nèi)容 將 /var/log/auth.log 和 /var/log/auth.log.1 的文件內(nèi)容保存到/home/auth.log 從上面的輸出,,我們可以看到,,有許多冗余的信息。我們可以通過過濾來得到想要的信息,。有一個非常有用的用法grep來處理這種情況,。語法如下,
Grep也可以應(yīng)用到命令和腳本中
通過 我們也可以跟蹤文件更改記錄。例如,,當你需要測試網(wǎng)頁時,,這將變得非常有用。所以當你查詢?nèi)罩净蛘卟榭葱碌恼J證記錄時,,你可以獲取到這樣的信息: 打印制定文件的第三方應(yīng)用的新記錄 tail -f some_web_server_log 也可以配合grep來使用 打印包含error的新記錄 tail -f some_web_server_log | grep error 接下來讓我們看看tail做了什么,。首先設(shè)置跟蹤文件 /var/log/auth.log 然后利用tail命令 -f /var/log/auth.log | grep sshd 在每個面向主機ssh的新連接建立以后,我們顯示相關(guān)信息和認證記錄,。 另一個用于分析文件的有用工具是 awk 'program' input-file1 input-file2
我們可以利用awk查看用戶何時連接或加入ssh $ awk '/sshd/ && /pam_unix/ {print ($1,$2,$3,$8,$11)}' /var/log/auth.log 另外一個有用的命令是 [addr [, addr]] cmd [args] Sed命令循環(huán)將輸入字符串轉(zhuǎn)化,,并輸出。 例子:
下面介紹一下一些便于遠程主機操作的有用的命令,。Tar和zip對于文檔的操作會節(jié)省空間和流量。常用的命令如下: 對于tar:
對zip:
其中, 當然,,遠程主機的相關(guān)任務(wù)還需要本地電腦和遠程主機之間的文件傳輸,。下面的命令將幫助我們完成這些任務(wù):
利用awk命令我們已經(jīng)獲得用戶連接時間和斷開時間。現(xiàn)在我們將這些保存在一個文件中,,將其壓縮成tar文件并上傳: 總結(jié) 通過這篇文章,,我們可以看多CLI的多種用途和它是如何幫助我們進行數(shù)據(jù)科學探究的。多數(shù)讀者肯定在搜索命令行上花了不少的時間,。本文旨在幫助理解這些常用的基礎(chǔ)命令,。 每一個指令都很有用,它們的合理組合將會形成一個非常強大指令?,F(xiàn)在你可以熟練運用grep,,sed和awk等命令。它們將會給你帶來很多機會,。 |
|