Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

xfallen86

macrumors newbie
Original poster
Hi everybody,
First, thanks for the job done on that forum !!

I'm an IT specialist and I manage a hundred of iMacs with 10.12 installed. I have to log when user login and logout with the Mac address and IP address.

Have you an idea if I can do a script which is saved automatically on a shared point with each information when user login and logout of a computer ?

Have a good day.
 
Depends on what kind of sollution you want.
You might consider to write a small application 'background' application with xCode.
Register it to launch in LaunchDaemons

On applicationDidFinishLaunching you can log NSUsername() as being 'logged in' on IP: [[[NSHost currentHost] addresses] lastObject]
afterwards call [self LogoutNotifications];
The function might look something like this
Code:
-(void)LogoutNotifications {
   NSNotificationCenter *notCenter;
    notCenter = [[NSWorkspace sharedWorkspace] notificationCenter];
    [notCenter addObserver:self
                  selector:@selector(loggingOut)
                      name:NSWorkspaceWillPowerOffNotification object:nil];
[[NSRunLoop currentRunLoop] run];
}
This observer traps the Restart, logout and shutdown, and calls function loggingOut
Then create a function 'loggingOut' and log the NSUsername to logout again with the IP.
 
Hi,
thanks for you answer.

I worded on the script yesterday morning and I have that :

Code:
#!/bin/bash
# logout script
username=${1}
date=`date "+%m-%d-%Y"`
time=`date "+%H:%M:%S"`
computer=`hostname`
ip=$(ip addr show en0 | awk '/inet / {print $2}' | cut -d/ -f 1)
mac=$(ip link show en0 | awk '/ether/ {print $2}')
logfile="/var/log/usertracking.log"
echo $date" "$time," "$username," "$computer," "$ip," "$mac," logout" >> "$logfile"

But ..... in the log there is no IP and no MAC address ... I don't know why :

10-06-2016 11:29:46, *****, ****55.local, , , logout
10-06-2016 11:30:59, *****, ****55.local, , , login

That the first thing.

After I will have to export that file to a Sharepoint
 
On the mac you don't have a command ip addr

Try the following:
Code:
....
ip=$(ifconfig en0 | awk '/inet /{split($2,a," "); print a[1]}')
mac=$(ifconfig en0 | awk '/ether/{split($2,a," "); print a[1]}')
....
Please note the interface, en0 is the interface of my WiFi.
This might be eth0 ?
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.