iT邦幫忙

DAY 25
4

我與BASH shell scripting的每一天系列 第 25

我與BASH的每一天 - [25] 紀錄鍵盤動作的命令 - script

script可以將使用者的鍵盤動作記錄下來到指定的檔案上去,如果把這行指令加到**/etc/profile**中,就可以在系統開機後依據登入的user帳號、日期、與來源IP位址作為檔名,儲存到/tmp/test目錄底下。

exec /usr/bin/script -a -f -q /tmp/test/$USER-`date +%Y%m%d%H%M`-`w | tail -n +3 | awk 'BEGIN {ip="local"}{if ($5=="0.00s" || $3 != "-") ip=$3 fi} END {print ip}'`.log

date +%Y%m%d%H%M指令用以產生日期,w | tail -n +3取得當下登入者的帳號以及來源IP位址等內容,再透過awk 'BEGIN {ip="local"}{if ($5=="0.00s" || $3 != "-") ip=$3 fi} END {print ip}'去取得IP位址。如果w命令顯示的內容中IDLE的時間等於0.00s,或是FROM不是”-”時,則取得IP位址,要不就直接寫"local"。

也就是說這個script會產生像一個這樣的檔案名稱來記錄使用者的鍵盤動作:
/tmp/test/root-201210192153-172.22.1.38.log

[系列文章]

我與BASH的每一天 - [1]利用bc命令來取得數字字串中的特定欄位值
我與BASH的每一天 - [2]直取字串變數中的特定欄位值
我與BASH的每一天 - [3] 利用awk來擷取特定欄位
我與BASH的每一天 - [4] 利用awk來擷取特定欄位-2
我與BASH的每一天 - [5] 利用awk來擷取特定欄位-3
我與BASH的每一天 - [6] 利用cut來擷取特定欄位
我與BASH的每一天 - [7] grep指令的妙用 - 1
我與BASH的每一天 - [8] grep指令的妙用 - 2
我與BASH的每一天 - [9] 正規化表示法 - 1
我與BASH的每一天 - [10] 正規化表示法 - 2
我與BASH的每一天 - [11] 正規化表示法 - 3
我與BASH的每一天 - [12] 正規化表示法 - 4
我與BASH的每一天 - [13] sed - 1
我與BASH的每一天 - [14] sed - 2
我與BASH的每一天 - [15] sed - 3
我與BASH的每一天 - [16] 多條件選擇 - case
我與BASH的每一天 - [17] 建立自動化的暫存檔 - mktemp
我與BASH的每一天 - [18] if 條件判斷的正規化用法
我與BASH的每一天 - [19] 複合式的條件判斷
我與BASH的每一天 - [20] 代表參數位置的特殊變數符號與shift
我與BASH的每一天 - [21] 特殊的參數變數符號: $@ 與 $*
我與BASH的每一天 - [22] while-loop與array的結合
我與BASH的每一天 - [23] 顯示程式執行的進度
我與BASH的每一天 - [24] 打包initrd image


上一篇
我與BASH的每一天 - [24] 打包initrd image
下一篇
我與BASH的每一天 - [26] 使用者參數選項 - getopts
系列文
我與BASH shell scripting的每一天31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言