key区分登录用户

脚本放 /etc/profile.d,会默认登录的时候执行, 类似于

#!/bin/bash
# filename: /etc/profile.d/set_log_file.sh
#增加 关于history操作记录按key分离的实现
if [ ! -d /var/log/login/histlog ];then
/bin/mkdir -p /var/log/login/histlog
/bin/chmod 777 /var/log/login/histlog
fi shopt -s histappend
history -a
# your_name 最好是英文
# ssh-rsa kn5SZaPKpEvtX2LmGBDMddltLRgS14OCy3y8KLdHvMfBuhIdroDs9M3GVDUNEvZLelwh0zTRViaxS6BLHgDxHlImXEQ43OrsuUA46oYVW/O5kMJpQXLjBf7mQas/17y8c5XQmTzZbVknusIPxWBf+CKluFi3RtdTmVXLe48FaF9rg2J3bffxR2jlF7fGQTE4ABh6G99hKdtCh/2zhz7rpsJhnqDIpucwPz6anfdrptJUUfSQeRC4gSQxATwmmE1L7EW5tfWpJCKIfg/45pAIfCFKCof/HZpdBRUNLmn9+ktzGFrE47Q== your_name
# NAME_OF_KEY=$(ssh-add -L | awk '{ print $3 }' ) # 如果key注释是英文,可以直接用这个简单的方法,如上
NAME_OF_KEY=$(ssh-add -L|awk '{print $2}' | xargs -i grep '{}' ~/.ssh/authorized_keys |awk '{print $3}') # 获取登录的key的注释,一般是登录key的人的名字,最好英文 USER=$(whoami) # 获取登录的用户
if [ -n "${USER}_$NAME_OF_KEY" ];then
if [ ! -f /var/log/login/histlog/"${USER}_$NAME_OF_KEY" ];then
touch /var/log/login/histlog/"${USER}_$NAME_OF_KEY"
fi export HISTFILE="/var/log/login/histlog/${USER}_$NAME_OF_KEY"
fi # echo 导致scp失败,但是在debug的时候,可以把下面echo的注释打开
#echo HISTFILE="/var/log/login/histlog/${USER}_$NAME_OF_KEY"
export PROMPT_COMMAND='history -a;history -w'
export HISTTIMEFORMAT='%Y%m%d-%H:%M:%S: '

日志生成的路径:

[root@ns_10.2.1.242 profile.d]$ cd /var/log/login/histlog/
[root@ns_10.2.1.242 histlog]$ pwd
/var/log/login/histlog
[root@ns_10.2.1.242 histlog]$ ls
root_xupeiyuan

ssh-add命令

[root@ns_10.2.1.242 etc]$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA4NWBVjQzaQChJiwx8IUMH5Og6f/0atgxZkn5SZaPKpEvtX2LmGBDMddltLRgS14OCy3y8KLdHvMfBuhIdroDs9M3GVDUNEvZLelwh0zTRViaxS6BLHgDxHlImXEQ43OrsuUA46oYVW/O5kMJpQXLjBf7mQas/17y8c5XQmTzZbVknusIPxWBf+CKluFi3/RtdTmVXLe48FaF9rg2J3bff/xR2jlF7fGQTE4ABh6G99hKdtCh/2zhz7rpsJhnqDIpucwPz6anfdrptJUUfSQeRC4gSQxATwmmE1L7EW5tfWpJCKIfg/45pAIfCFKCof/HZpdBRUNLmn9+ktzGFrE47Q== xupeiyuan

查看历史命令

查看所有登录的人执行的命令:

#!/bin/bash
#服务器history按key分离后操作记录查看脚本 cd /var/log/login/histlog/
rm -fr /tmp/usrname.history
ls /var/log/login/histlog/|while read usrname
do
filename=$usrname
exec 5<$filename
while read line <&5
do
echo $line|awk '{if ($1 ~/^#[0-9]+/) {split ( $0 , time, "#"); printf (" '$usrname' " strftime("%Y-%m-%d_%H:%M:%S",time[2])" ")} else print $0 }'>>/tmp/usrname.history
done
done
sort -k2 /tmp/usrname.history |cat -n

上面脚本的结果:

[root@ns_10.2.1.242 histlog]$ sh ~/view_history.sh
1 root_xupeiyuan 2015-03-13_10:27:04 ls
2 root_xupeiyuan 2015-03-13_10:27:10 cd /etc/profile.d/
3 root_xupeiyuan 2015-03-13_10:27:12 ls
4 root_xupeiyuan 2015-03-13_10:27:14 vim set_log_file.sh
5 root_xupeiyuan 2015-03-13_10:27:58 ssh-add -L

linux通过key区别登陆的人的更多相关文章

  1. 浅谈 unix, linux, ios, android 区别和联系

    浅谈 unix, linux, ios, android 区别和联系 网上的答案并不是很好,便从网上整理的相对专业的问答,本人很菜,大佬勿喷 UNIX 和 Linux   UNIX 操作系统(尤尼斯) ...

  2. 1.Linux和Unix区别

    整理来源于网络:http://blog.csdn.net/xiaojianpitt/article/details/6377419 有很多初学Linux的人比较关心Linux和windows的区别,这 ...

  3. Linux设置禁止用户登陆

    Linux设置禁止用户登陆 vim /etc/shadow 第二栏(密码栏)设为*,会丢失密码 usermod -L username # -L Lock; -U Unlock chsh userna ...

  4. socket在windows下和linux下的区别

    原文:socket在windows下和linux下的区别 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h    错误处理:errno.h 2 ...

  5. linux 硬软链接区别

    linux 硬软链接区别 linux的软连接(symbolic link or soft link)类似于windows的快捷方式:而硬链接(hard link)机制有点像copy,不过不同的是,带有 ...

  6. linux查看当前用户登陆信息

    @(Linux基础)[linux查看当前用户登陆信息] linux查看当前用户登陆信息 作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动.有些时候,你甚至需要知道他(她)们正 ...

  7. cmd命令和linux命令的区别

    cmd命令和linux命令看起来很相似,都是在一个控制台输入一些特定的指令去完成一些特定的操作.可是用过的朋友就会发现这些指令是有很多不同的,可是到底有什么不同,要说又说不上来,所以要了解一下. cm ...

  8. Linux SSH 使用密钥登陆

    Linux SSH 使用密钥登陆 通常我们登录 Linux 服务器,我们需要使用密码进行登录,但是密码存在被暴力破解的可能. 可以将默认服务端口 22 改成其他不常用的端口. 可以设置非常复杂的密码. ...

  9. Linux中ssh介绍与ssh+key密钥登陆部署

    环境内核信息: [root@zabbix- ~]# uname -a Linux zabbix- -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_64 x86 ...

随机推荐

  1. rac 中节点的vip在该节点启动不了,在其它节点正常启动。

    本实验是在虚拟机中! 与实验同样的问题:http://blog.csdn.net/wanghui5767260/article/details/38850335 问题描写叙述: 节点1.节点2和节点3 ...

  2. 微软中国裁员曝光:在CD结束后!薪酬不变!

    聚众抗议的前诺基亚员工(腾讯科技配图) 腾讯科技 郭晓峰 腾讯科技刚刚获取了一份微软设备事业部中国区管理团队4日晚间发给被裁员工的补偿方案邮件. 邮件内容显示,微软承诺在收购诺基亚交易结束(2014年 ...

  3. Linux常见命令整理(一)

    整理一下,以备后用 cd /home 进入/home文件夹 cd .. 返回上一级文件夹  cd ../.. 返回上两级文件夹  cd 进入个人的主文件夹  cd - 返回上次所在的文件夹 pwd 显 ...

  4. 【转】c#实现字符串倒序的n种写法

    其中LINQ写法最为简洁 //string concatenation with for loop public string ReverseA(string text) {     char[] c ...

  5. 【Bible for kids】 儿童圣经 App

    [Bible for kids] 儿童圣经App 除了<The Bible>这个由YouVersion团队开发的全球下载量和安装数目第一的圣经类.安装量已逾1亿8千万的App之外,YouV ...

  6. can&#39;t connect to mysql server on localhost &lt;10061&gt;

    需要启动MySQL服务.它可以通过两种方式来启动使用MySQL: 1.命令行模式. Win+R,进入cmd然后按Enter键.在命令行形式的输入: net start mysql56 mysql56是 ...

  7. Windows 8实例教程系列 - 数据绑定基础实例

    原文:Windows 8实例教程系列 - 数据绑定基础实例 数据绑定是WPF,Silverlight以及Windows Phone应用开发中最为常用的开发技术,在基于XAML的Windows Stor ...

  8. Flynn初步:基于Docker的PaaS台

    Flynn它是一个开源PaaS台,无论要部署的应用程序,你可以建立自己的主动性Docker容器集群的实现,能特性与组件设计大量參考了传统的PaaS平台Heroku.本文旨在从使用动机.基本对象.层次架 ...

  9. Android使用HttpURLConnection下载图片

    讲到http就必须要了解URI和URL URI (uniform resource identifier)统一资源标志符: URL(uniform resource location )统一资源定位符 ...

  10. Objective-C路成魔【2-Objective-C 规划】

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 编译执行O ...