|
|
#include <rpcsvc/rusers.h>int rusers(const char *host, struct utmpidlearr *up);
rpcsvc/rusers.h:
struct utmpidlearr {
struct utmpidle **uia_arr;
int uia_cnt;
};
struct utmpidle {
struct ru_utmp ui_utmp;
unsigned ui_idle;
};
struct ru_utmp {
char ut_line[8]; /* tty name */
char ut_name[8]; /* user id */
char ut_host[16]; /* host name, if remote */
long ut_time; /* time on */
};
#include <stdio.h> #include <sys/types.h> #include <rpcsvc/rusers.h>main (int argc, char *argv[]) { int i; struct utmpidlearr utmp_array;
if (argc != 2) { fprintf (stderr, "Usage: %s host\n", argv[0]); exit (1); } utmp_array.uia_arr = NULL;
if (rusers (argv[1], &utmp_array) != 0) { fprintf (stderr, "%s: rusers failed\n", argv[0]); exit (1); }
for (i = 0; i < utmp_array.uia_cnt; i++) { printf ("Entry %d:\tidle time = %u minutes\n\t\t", i, utmp_array.uia_arr[i]->ui_idle); printf ("tty name = %s\n\t\t", utmp_array.uia_arr[i]->ui_utmp.ut_line); printf ("user id = %s\n\t\t", utmp_array.uia_arr[i]->ui_utmp.ut_name); printf ("host name = %s\n\t\t", utmp_array.uia_arr[i]->ui_utmp.ut_host); printf ("time logged on = %s\n\n", ctime ((time_t *) &utmp_array.uia_arr[i]->ui_utmp.ut_time)); } }