Linux 記錄會話過程的命令

來源:互聯網
上載者:User

   在Unix系統維護中,有時候系統工程師希望能夠記錄下會話的過程。如在測試一個系統功能的時候,工程師就希望將測試的步驟都一一的紀錄下來。以便出現問題時利用這份資料進行追蹤分析。如有時候在製作培訓文檔的時候,可能也需要這些會話記錄,以方便培訓師製作PPT等培訓文檔。總之就是一句話,系統工程師現在想要記錄某個會話的過程,在Unix系統中能否實現?

  一、script命令的主要作用於特點。

  在Windows作業系統中,讀者可能用過一些螢幕記錄軟體,可以將某段時間的操作通過視頻的形式記錄下來。不過在Unix作業系統中,有時候不用這麼麻煩。因為作業系統提供了一個script命令,協助系統工程師來記錄某個會話的過程。這是一個比較冷僻的命令,也不在POSIX的規範中。為此有些Unix作業系統版本就可能不帶有這個功能。不少系統工程師可能平時很少接觸這個命令。不過筆者是比較喜歡這命令的。簡單的說,系統工程師利用這個命令就可以將一個會話的整個過程或則中間的某些操作記錄到一個檔案中。利用這個命令基本上可以在檔案中記錄大部分的鍵盤操作、命令的輸出結果以及錯誤資訊。也就是說,在螢幕上輸出的資訊基本上都可以儲存在這個檔案中。然後系統管理員可以在事後查看這個檔案以獲得必要的資訊。那麼這個命令該如何使用呢?如下圖,其實很簡單。

  如上圖所示,就是script命令使用的基本過程。首先當系統工程師想要記錄某個會話的時候,則只需要在會話開始時輸入script命令。輸入這個命令後,系統就會將目前使用者的所有鍵盤操作、螢幕輸出以及錯誤資訊等等儲存到一個特定的檔案中。如上面執行了ps命令與who命令後,希望就會將這兩個命令(使用者的鍵盤操作)、螢幕輸出(命令的執行結果)等等儲存到檔案中。當工程師需要退出記錄過程時,則只需要輸入exit命令,系統就會就是script done的提示資訊。表示系統已經結束了記錄工作。

  當系統工程師需要查看這個檔案的資訊時,可以使用cat或者vi命令來查看這個檔案中的內容。不過所使用的shell版本不同,他們先是的結果可能有所差異。如在某些版本中,使用cat命令來查看這個檔案,可能只顯示這個命令在什麼時候完成,而不會顯示使用者的鍵盤操作與螢幕的輸出資訊。為此筆者建立採用vi命令。利用vi命令來查看這個檔案,就不會有版本之間的差異問題。如使用vi typescript命令,就可以查看這個檔案中的具體資訊。通常情況下,整個檔案中包含以下幾部分內容。

  第一行是注釋資訊。如“Script started on 2009年06月15日 星期一 18時24分21秒”。這個提示資訊顯示這個命令開始執行的時間。然後在最後一行中,也有類似的提示資訊。不過最後一行的提示資訊顯示的是這個命令完成的時間,顯示了命令執行完成的日期、具體時間等西虛擬。然後中間的部分就是命令與輸出結果的資訊。如果在命令的的執行過程中,有錯誤資訊的話,也會一併在這裡記錄。

  二、scirpt命令使用的注意事項。

  從以上的截圖中可以看出這個命令使用起來其實並不是很複雜。不過在一些細節方面還系統管理員仍然需要注意。具體的來說,有如下幾個方面要注意。

  第一需要注意重複記錄的問題。系統工程師可能只需要記錄部分的操作,為此在世紀工作中可能會頻繁的開啟和關閉這個命令。但是需要注意的是,預設情況下採用script命令後會覆蓋原有的檔案。如現在系統工程師首先使用script命令記錄了ps操作,此時系統會產生一個叫做typescript的檔案,記錄這個命令操作的相關資訊,然後中止了這個命令。一會兒一後又重新使用這個命令,來記錄who操作的過程。此時系統又會產生一個一模一樣的typescript檔案。此時系統會將原先的記錄檔案覆蓋掉。顯然這可能跟系統工程師的初衷相違背的。系統工程師希望後續的操作能夠儲存在原先的記錄檔案中,而不是覆蓋掉。如果要實現這個需求的話,那麼系統工程師在執行這個命令時,必須使用一個可選項參數。即按照script –a的形式來啟動這個命令。此時系統就不會覆蓋原有的記錄內容,而是將後續的操作內容追加到原有的檔案中。

  第二是不會記錄所有的操作。如系統工程師先啟動了script命令。然後再利用passwd命令來修改當前帳戶或者其他帳戶(以特權使用者登入)的密碼時,這個密碼資訊是否也會記錄下來呢?如果在記錄檔案中也記錄了密碼的操作資訊,那麼顯然會帶來一定的安全隱患。不過這個擔憂是多餘的。各位讀者可以回去測試一下,一般情況下這個密碼資訊是不會記錄在這個檔案中。其實,大家可以想象一下,再輸入passwd命令後,輸入新密碼時,在螢幕上也不會顯示使用者的輸入內容,即新密碼。為此這個在螢幕上沒有輸出的內容,也不會儲存到這個記錄檔案中。所以筆者說使用者的這個擔憂是不必要的。

  第三是某些特定的命令不會記錄。筆者上面談到,有些鍵盤操作記錄是不會被儲存的。即只要在螢幕上沒有輸出的資訊一般情況下就不會給儲存到記錄檔案中。不過這是一個充分不必要條件。即反過來就不成立。並不是螢幕上所有顯示的內容都會一五一十的記錄到這個檔案中。像一些全螢幕模式的操作命令,如vi命令等等,就不會記錄到這個檔案中。為此系統工程師在使用這個工具時,需要預見到這種情況。在操作時,如果需要記錄相關的會話過程,那麼就需要盡量避免使用一些全屏的命令。如在設定環境變數時,盡量不要直接利用vi修改相關的設定檔。而是使用set等非全屏命令來對環境變數進行操作。如此作業系統才能夠記錄完成的操作過程。

  第四系統工程師需要瞭解一些特殊鍵在檔案中是如何表示的。上面筆者所過,記錄檔案基本上會記錄所有的鍵盤敲擊動作。如現在使用者輸入了ls -1命令先查看目前的目錄下的所有檔案的詳細資料。後來使用者反悔了,就利用退格鍵將後面的-l參數去掉了。此時這個退格鍵的操作也會儲存到記錄檔案中。但是這些特定的功能鍵在檔案中是採用一些特殊的符號來表示的。如退格鍵在檔案中採用的是“[K”字元符號。所以向這個游標移動鍵或者del刪除鍵等等都有不同的代表方式。只有熟悉了這些代碼的含義之後,才可以真正的讀懂這個檔案。不過其代表的形式雖然不同,但是還是有點規律可循。即一般特殊的功能鍵都是以[開頭的。如果系統工程師看到有這個字元的話,那麼就需要考慮這是否代表著某個特殊的功能鍵。

  第五是可以根據自己的需要來確定記錄的檔案名稱與儲存的路徑。如果系統工程師直接使用script命令的話,那麼系統會自動為這個檔案命名。並且這個檔案預設是儲存在命令執行所在的目錄,即目前的目錄中。系統工程師在執行命令時,也可以自訂記錄檔案的名字與儲存路徑。如可以使用這個命令script log,讓系統將相關的記錄儲存在當前檔案夾下的log檔案中。如果這個檔案不存在的話,系統會自動建立這個檔案。若存在的話,除非在命令中使用了-a參數,否則的話,會覆蓋原有的檔案。在覆蓋之前,不會提醒系統工程師。所以這一點系統工程師要引起重視,防止檔案被意外刪除。

  第六是需要注意如果輸出結果中有圖片資訊的話,在這個檔案中無法正常讀取。如在會話記錄的過程中,使用了netconfig命令啟動了一個圖形視窗。這個圖形視窗的資訊不會在記錄檔案中正確反映。系統工程師查看記錄檔案時,看到的可能只是一連串的[k符號而已。最後需要說明的是,script命令只是對當前的會話有效。即即使在root帳戶下啟動了script命令,則系統記錄的仍然是當前會話的操作。對於其他使用者的會話不會有絲毫影響,也不會記錄其他使用者的操作。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.