Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对记录小时数的程序/脚本的建议_C++_Linux_Windows_Logging_Signals - Fatal编程技术网

C++ 对记录小时数的程序/脚本的建议

C++ 对记录小时数的程序/脚本的建议,c++,linux,windows,logging,signals,C++,Linux,Windows,Logging,Signals,这是一个有点开放性的问题,但我正在寻找关于如何解决这个问题的一般指导,因为我真的不知道从哪里开始: 对于我现在的雇主,我需要每周记录我的工作时间。因此,我对编写一个程序(我最熟悉C++)或一个脚本感兴趣,以便在每次登录到我的机器并将其置于睡眠状态时“不可见地”捕获。社区能否推荐如何做到这一点的方法 我将更详细地描述我的工作环境: 我登录到一个我主要用来收发电子邮件和浏览网页的Windows设备,但我的大部分开发工作都是通过VNC对Linux设备进行的。因此,我几乎在登录到Windows之后立即登

这是一个有点开放性的问题,但我正在寻找关于如何解决这个问题的一般指导,因为我真的不知道从哪里开始:

对于我现在的雇主,我需要每周记录我的工作时间。因此,我对编写一个程序(我最熟悉C++)或一个脚本感兴趣,以便在每次登录到我的机器并将其置于睡眠状态时“不可见地”捕获。社区能否推荐如何做到这一点的方法

我将更详细地描述我的工作环境:

我登录到一个我主要用来收发电子邮件和浏览网页的Windows设备,但我的大部分开发工作都是通过VNC对Linux设备进行的。因此,我几乎在登录到Windows之后立即登录到Linux box。Linux盒子是我自己的,所以我可以自由编写二进制/脚本守护进程来运行它

我的第一个想法是编写一个程序,以某种方式“捕获”windows登录和睡眠事件,类似于如何捕获SIGINT等-但我不知道这是否或如何可能

我对Linux环境很陌生,也很幼稚,所以我不知道为什么会发生这种情况:但当我恢复VNC会话时,通常不会提示我输入密码(我通常会看到x-screensaver发生崩溃的错误)。虽然很少有人提示我输入密码,但我还不知道有人问我密码和没问密码有什么区别。我之所以提到这一点,是因为如果存在“登录时陷阱”这样的事情,那么在Linux机器上似乎不可行,因为密码提示不一致

再次强调:我的目标是让一些东西能够捕获我的登录/注销/睡眠活动,而无需在每次登录/注销或使系统进入睡眠状态时启动命令/脚本。如果编写一个执行此操作的守护程序的代码/脚本是不合理的,那么是否有现成(免费)的解决方案可以做到这一点?如果不是,也就是说,如果唯一的解决方案是在每次我登录/注销或让系统进入睡眠状态时手动运行某些东西,那么我可以拼凑一个程序来实现这一点


感谢您的指点和建议。

您可以查看“last”命令。在本文中,我们提到了登录/注销时间列表。在我的机器上,这个命令也给了我看起来像持续时间(:我想)的值

如果您想自己研究协议登录的可能性,那么在“.bashrc”中添加命令可以让您在打开shell时运行自定义命令。但是,这种方法为您打开的每个控制台运行命令,而不仅仅是在您登录时


我想查看“last”命令可以很容易地得到您想要的结果。

好吧,如果情况紧急,您总是可以采用以下简单的解决方案,然后再转到更复杂的解决方案……在您所处的任何工作环境中编写脚本,用于测量从开始到开始的时间。您可以简单地让它停止,直到您输入任何输入,并获取直到您提供此输入所花费的时间

将这些结果输出到一些文本文件中,并将它们加载到一些代码中,以将结果解析为一种可呈现的格式,这在DBMS中很有意思。将脚本设置到计划程序中以自动启动

我在这里看到的一个问题是工作环境。你说Windows机器是你自己的,但是你想在上面记录工作时间吗?如果是这样的话,那么在阅读与工作相关的电子邮件时自动启动脚本就变得有点复杂了。。。在Linux环境下设置脚本会简单得多,也许可以添加在Windows机器上做与工作相关的事情所花费的时间的近似值,但您不提供Linux机器上的限制,因为Linux机器不是您的。也许你也可以编写一个脚本,加载机器,并将加载过程包装成一个功能,测量时间,直到你关闭机器。。。当然,如果您经常退出机器,这会变得很烦人


当然有更合适的方法来完全自动化这个过程,不过。。。取决于您的具体需求和限制,因此将此作为一个指针。

我发现了一个有趣的解决方案: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表示注销事件

从这里开始,我想象我期望的目标的剩余部分是用某种脚本来结束它,该脚本计算第一次登录和最后一次注销之间的时间


我想这可能是超级用户的问题,但我不知道问题/答案最初会指向哪里。

在Linux环境中设置脚本就可以了……它不需要放在Windows框中。澄清一下:Linux盒子也是我自己的,所以我也可以在这个盒子上编写脚本/代码。我不太明白:根据您的想法,您建议什么事件应该触发脚本将其开始时间写入文件?VNC服务器可能会生成您可以处理的日志文件。登录系统可能会记录登录失败。@Galik:这看起来很有希望;非常感谢。我必须使用VNC查看器启用日志记录(默认情况下未启用),但它似乎正在生成输出,我可以从中提取所需的信息。谢谢你的想法。这看起来很有希望;我不知道这个命令。关于如何使用这个命令,我有一些研究要做,因为登录列表与我期望的不匹配,但这是一个很好的起点。