博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
打开utmp文件,访问其中的内容
阅读量:5064 次
发布时间:2019-06-12

本文共 1447 字,大约阅读时间需要 4 分钟。

 
//
1:定义一个utmp结构体。保存读到的数据。
//
2:只读方式打开 /var/run/utmp 文件。
//
3:循环调用(read) 读取数据,直到读完位置。
//
4:每次读完数据后判断是普通用户的话,
//
打印登陆用户名,终端号,登陆时间
//
5:注意:打印时间的时候用ctime去转换。
//
if(A.ut_type==USER_PROCESS)
#include
<
stdio.h
>
#include
<
unistd.h
>
#include
<
utmp.h
>
#include
<
fcntl.h
>
#include
<
time.h
>
int
main(
int
argc,
char
*
argv[])
{
int
fd;
struct
utmp A;
fd
=
open(
"
/var/run/utmp
"
,O_RDONLY);
while
(read(fd,
&
A,
sizeof
(A))
!=
0
)
{
if
(A.ut_type
==
USER_PROCESS)
//
如果是普通用户则打印用户名、终端、和登陆时间。
printf(
"
%s\t%s\t%s\n
"
,A.ut_user,A.ut_line,ctime(
&
A.ut_tv.tv_sec));
}
return
0
;
}

程序2:

 
#include
<
stdio.h
>
#include
<
unistd.h
>
#include
<
utmp.h
>
#include
<
fcntl.h
>
#include
<
time.h
>
int
main(
int
argc,
char
*
argv[])
{
FILE
*
fp;
struct
utmp A;
fp
=
fopen(
"
/var/run/utmp
"
,
"
r
"
);
while
(fread(
&
A,
sizeof
(A),
1
,fp))
{
if
(A.ut_type
==
USER_PROCESS)
printf(
"
%s\t%s\t%s
"
,A.ut_user,A.ut_line,ctime(
&
A.ut_tv.tv_sec));
}
return
0
;
}
/var/run/utmp是一个二进制文件,记录当前登录系统的用户信息。可用who命令显示当中的内容。如:
debian:/var/log# who  23:23:46 up  3:14,  3 users,  load average: 0.61, 0.60, 0.45 USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT root     :0       -                20:12   ?xdm?  33:58   1.91s x-session-manager root     pts/1    :0.0             23:19    8.00s  0.28s  0.21s ssh reomte root     pts/3    :0.0             22:31    0.00s  0.23s  0.00s wd

转载于:https://www.cnblogs.com/hnrainll/archive/2011/05/24/2055935.html

你可能感兴趣的文章
「破解」Xposed强
查看>>
src与href的区别
查看>>
ABAP工作区,内表,标题行的定义和区别
查看>>
《xxx重大需求征集系统的》可用性和可修改性战术分析
查看>>
Python 中 创建类方法为什么要加self
查看>>
关于indexOf的使用
查看>>
【转】JS生成 UUID的四种方法
查看>>
英语单词
查看>>
centos6.8下安装matlab2009(图片转帖)
查看>>
Mongo自动备份
查看>>
求助大神!怎样批量删除数据库表中某个字段中同样的一段字符!
查看>>
VMWARE虚拟机无法访问的三种方法分析
查看>>
enq: SQ - contention
查看>>
cer证书签名验证
查看>>
ant 安装
查看>>
新手Python第一天(接触)
查看>>
vue路由动态加载
查看>>
【原】UIWebView加载本地pdf、doc等文件
查看>>
iOS中ARC内部原理
查看>>
【bzoj1029】[JSOI2007]建筑抢修
查看>>