在 mac 平台上,如何以编程方式确定用户何时通过 SSH 会话登录?
On the mac platform, how can I programmatically determine when a user logs in via an SSH session?
当我打开终端时(在linux 或mac 中),我可以使用命令'who' 查看当前登录的用户。我想编写一个本机 mac 应用程序(C 或 Objective-C),在用户登录(例如通过 SSH)的准确时刻通知我。
我在这里找到了这段代码:
SystemEventsMonitor.m
...它看起来能够收集有关桌面的信息,但不会泄露有关已登录用户的任何信息。我还找到了一个关于 Login Hooks 的 link 但我需要的是一个 C 或 objective-C api.
那么:我如何检测用户何时登录我的 mac machine(通过 SSH 或其他方式)?
本.
如您所知,linux 命令 who
在 Mac 平台上也可用,您可以使用 system
调用此命令:
int main ()
{
system("who");
return 0;
}
您也可以使用 w
命令。
最后,我决定使用 NSTask class 从 objective-c 以编程方式轮询命令 /usr/bin/users。每 5 秒,我检查是否有新用户登录或注销,方法是解析命令的输出并将其与当前存储的状态进行比较,将新用户添加到状态并显示新用户通知(即 'user logged in event' ),或者删除它们并在它们已注销时显示通知(即 'user logged out event')。
当我打开终端时(在linux 或mac 中),我可以使用命令'who' 查看当前登录的用户。我想编写一个本机 mac 应用程序(C 或 Objective-C),在用户登录(例如通过 SSH)的准确时刻通知我。
我在这里找到了这段代码: SystemEventsMonitor.m
...它看起来能够收集有关桌面的信息,但不会泄露有关已登录用户的任何信息。我还找到了一个关于 Login Hooks 的 link 但我需要的是一个 C 或 objective-C api.
那么:我如何检测用户何时登录我的 mac machine(通过 SSH 或其他方式)?
本.
如您所知,linux 命令 who
在 Mac 平台上也可用,您可以使用 system
调用此命令:
int main ()
{
system("who");
return 0;
}
您也可以使用 w
命令。
最后,我决定使用 NSTask class 从 objective-c 以编程方式轮询命令 /usr/bin/users。每 5 秒,我检查是否有新用户登录或注销,方法是解析命令的输出并将其与当前存储的状态进行比较,将新用户添加到状态并显示新用户通知(即 'user logged in event' ),或者删除它们并在它们已注销时显示通知(即 'user logged out event')。