在mac平台上,如何以编程方式确定用户何时通过SSH会话登录?

时间:2015-01-23 10:44:05

标签: objective-c c macos unix

当我打开终端(在linux或mac中)时,我可以使用命令' who'查看当前登录的用户。我想编写一个本机mac应用程序(C或Objective-C),在用户登录的确切时刻通知我(例如通过SSH)。

我在这里找到了这段代码: SystemEventsMonitor.m

...它看起来能够获取有关桌面的信息,但它并没有提供有关登录用户的任何信息。我还找到了关于Login Hooks的链接,但我需要的是C或Objective-C api。

那么:如何检测用户何时登录我的mac机器(通过SSH或其他方式)?

本。

2 个答案:

答案 0 :(得分:0)

如您所知,在Mac平台上也可以使用linux命令who,您可以使用此命令调用system

int main ()
{
    system("who");
    return 0;
}

您也可以使用w命令。

答案 1 :(得分:0)

最后,我决定使用NSTask类以编程方式从objective-c轮询命令/ usr / bin / users。每隔5秒,我通过解析命令的输出并将其与当前存储的状态进行比较来检查是否有新用户登录或退出,将新用户添加到状态并显示通知(如果他们是新的)(即'用户登录事件'),或删除它们并在它们已注销时显示通知(即'用户注销事件')。

Code on github here