2017-01-23 38 views
-2

這是一個稍微開放式的問題,但是我正在尋找如何處理這個問題的一般性指導,因爲我真的不知道從哪裏開始:建議程序/腳本登錄小時

對於我現在的僱主,我需要每週登錄我的工作時間。所以我有興趣編寫一個程序(我最適合使用C++)或腳本,每次登錄到我的機器並進入睡眠狀態時都會「無形」捕獲。社區可以推薦如何做到這一點的方法嗎?

我將介紹我的工作環境多一點:

我登錄到Windows中,我主要使用電子郵件和網頁瀏覽,但我大部分開發工作都是由VNC'ing做一個Linux框。因此,登錄到Windows後幾乎立即登錄Linux框。 Linux機器是我自己的,所以我可以自由地編寫二進制/腳本守護進程來運行它。

我的第一個想法是編寫一個程序,以某種方式「困住」Windows登錄和睡眠事件,類似於如何捕獲SIGINT等 - 但我不知道這是否可行。我很新,天真的Linux環境,所以我不知道爲什麼會發生這種情況:但當我恢復我的VNC會話時,我通常不會提示輸入密碼(我通常會看到有關x-screensaver發生崩潰)。我是很少有提示輸入我的密碼,但我還不知道當我被問及什麼時候沒有。我之所以提到這一點,是因爲如果存在「陷入登錄」這樣的事情,那麼在Linux機器上執行它似乎是不可行的,因爲這種密碼提示不一致。

再次說明:我的目標是讓我的登錄/註銷/睡眠活動捕獲我的沒有我每次登錄/註銷或將系統置於睡眠狀態時都會啓動一個命令/腳本。如果編寫/編寫這樣做的守護進程是不合理的,那麼現成的(和免費的)解決方案可以做到這一點嗎?如果不是這樣 - 即如果唯一的解決方案是每次登錄/註銷或讓我的系統進入睡眠狀態時手動運行某些內容 - 那麼我會很樂意協調一個程序來執行此操作。

謝謝指點和建議。

+0

VNC服務器可能會生成您可以處理的日誌文件。如果登錄系統可能登錄登錄,則失敗。 – Galik

+0

@Galik:這看起來很有前途;謝謝。我必須使用VNC Viewer啓用日誌記錄(默認情況下未啓用),但它看起來是生成輸出,從中我可以提取所需的信息。感謝這個想法。 – StoneThrow

回答

0

我找到了一個有趣的解決方案:Windows PowerShell中的Get-WinEvent命令。例如:

PS C:\Windows\system32> Get-WinEvent -FilterHashtable @{starttime='1/20/2017';endtime='1/21/2017';logname='security';id=4648,4634} 

TimeCreated        ProviderName                 Id Message 
-----------        ------------                 -- ------- 
1/20/2017 6:20:38 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 5:42:20 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 5:42:20 PM     Microsoft-Windows-Security-Auditing          4648 A logon was attempted using explicit... 
1/20/2017 5:42:20 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 5:42:20 PM     Microsoft-Windows-Security-Auditing          4648 A logon was attempted using explicit... 
1/20/2017 5:42:20 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 5:42:20 PM     Microsoft-Windows-Security-Auditing          4648 A logon was attempted using explicit... 
1/20/2017 5:42:19 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 5:42:18 PM     Microsoft-Windows-Security-Auditing          4648 A logon was attempted using explicit... 
1/20/2017 5:30:32 PM     Microsoft-Windows-Security-Auditing          4648 A logon was attempted using explicit... 
1/20/2017 5:30:29 PM     Microsoft-Windows-Security-Auditing          4648 A logon was attempted using explicit... 
1/20/2017 4:34:36 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 2:49:34 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 2:07:06 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 1:48:06 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 1:48:06 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 1:45:09 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 1:45:09 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 1:42:55 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 1:42:54 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 12:56:32 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 12:16:58 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 12:16:58 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 12:16:58 PM     Microsoft-Windows-Security-Auditing          4648 A logon was attempted using explicit... 
1/20/2017 12:16:58 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 12:16:58 PM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 12:16:58 PM     Microsoft-Windows-Security-Auditing          4648 A logon was attempted using explicit... 
1/20/2017 11:23:29 AM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 10:06:22 AM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 9:48:06 AM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 9:48:06 AM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 9:45:19 AM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 9:45:09 AM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 9:43:47 AM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 9:43:47 AM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 9:43:47 AM     Microsoft-Windows-Security-Auditing          4648 A logon was attempted using explicit... 
1/20/2017 9:43:47 AM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 9:43:47 AM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 9:43:47 AM     Microsoft-Windows-Security-Auditing          4648 A logon was attempted using explicit... 
1/20/2017 9:43:25 AM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 9:42:57 AM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 9:42:56 AM     Microsoft-Windows-Security-Auditing          4634 An account was logged off.... 
1/20/2017 9:42:52 AM     Microsoft-Windows-Security-Auditing          4648 A logon was attempted using explicit... 

其中4648代表登錄事件,4634代表註銷事件。

從這裏我可以想象我期望的其餘目標是將它包含在某種腳本中,用於計算第一次登錄和最後一次登出之間的時間。

我想這可能已經超級用戶,但我不知道問題/答案會導致哪裏。

2

你可以看看「最後」的命令。在another stack overflow question這被列爲登錄/註銷時間。在我的機器上,這個命令也給了我看起來像一個持續時間(:我認爲)的值。

如果你想看看protocoling登錄自己的可能性,添加命令進入「.bashrc中」允許您運行自定義命令每當外殼被打開。然而,這種方法對於運行每控制檯命令你開,不只是當你登錄。

我猜尋找到「最後」命令可以很容易地給你你想要的結果。

+0

這看起來很有前途;我不知道這個命令。我有一些關於如何使用這個命令的研究,因爲登錄列表與我所期望的不符,但這是一個很好的起點。 – StoneThrow

0

嗯,你總是可以採取以下簡單的解決方案,如果情況緊急,然後移動到一個更復雜的一個後...寫你是在任何工作環境中的腳本,測量時間從開始到行動。在輸入任何輸入之前,您可以簡單地停止輸入,並獲取需要多長時間直到您提供此輸入。

將這些結果輸出到一些文本文件中,並將它們加載到某些代碼中以將結果解析爲可呈現的格式,這在DBMS中會很有趣。將腳本設置到調度程序中以自動啓動...

我在這裏看到的一個問題是工作環境。你說Windows機器是你自己的,但是你想記錄工作時間嗎?如果是這樣,在閱讀與工作相關的電子郵件時自動化腳本開始變得更加複雜......在Linux環境中設置腳本並且可能會增加大約花費在Windows機器做與工作有關的東西,但是你不提供Linux機器上的限制,這不是你自己的限制。也許你也可以編寫一個腳本來加載機器,並在測量時間的功能中包裝加載,直到關閉機器......當然,如果經常退出機器,這會變得很煩人。

確實有更合適的方法來完全自動化這個過程,儘管......取決於你想要什麼以及你受限於什麼,所以把它當作指針。

+0

在Linux環境中設置腳本應該沒問題......它不需要在Windows中。爲了澄清:Linux的盒子也是我自己的,所以對我來說,在這個盒子上編寫腳本/代碼也是非常完美的。我不太明白:有了你的想法,你認爲哪個事件應該觸發腳本將其開始時間寫入文件? – StoneThrow