Tam*_*mas 9 linux ssh bash profile
我有一个令我困惑的问题,我想知道是否有人试图实现以下目标:
我们假设这是我在Linux环境中使用'last'命令的结果:
root pts/1 192.168.1.10 Wed Feb 10 07:04 - 07:57 (00:52)
root pts/2 Tue Feb 9 22:00 - 00:13 (02:13)
Run Code Online (Sandbox Code Playgroud)
如果"root"用户已从192.168.1.10登录,如何设置特定操作(例如修改的MOTD或发送电子邮件).有没有办法捕获这些信息?
这个问题的第二部分是如何使上述检查更加健壮 - 即如果我有以下内容:
mary pts/1 192.168.1.10 Wed Feb 10 07:04 - 07:57 (00:52)
bob pts/2 Tue Feb 9 22:00 - 00:13 (02:13)
Run Code Online (Sandbox Code Playgroud)
现在,如果用户名等于'mary'且主机为192.168.1.10,我想执行一个操作.
欢迎任何建议.
先感谢您.
Gil*_*not 17
有一个特殊的文件/etc/ssh/sshrc,你可以放置一些命令,每次有人连接时都会运行ssh.我为你写的:
#!/bin/bash
mail=user@domain.tld
monitored_user=root
monitored_ip=x.x.x.x
hostname=$(hostname)
# add a welcome message:
printf >&2 "\nWelcome on $hostname $USER\n"
read -d " " ip <<< $SSH_CONNECTION
[[ $ip == $monitored_ip && $USER == $monitored_user ]] || exit 0
date=$(date "+%d.%m.%Y %Hh%M")
reverse=$(dig -x $ip +short)
mail -s "Connexion of $USER on $hostname" $mail <<EOF
IP: $ip
Reverse: $reverse
Date: $date
EOF
Run Code Online (Sandbox Code Playgroud)
将此脚本放在一个文件中,然后将脚本的完整路径放入 /etc/ssh/sshrc
在man ssh:
/ etc/ssh/sshrc:当用户登录时,在用户的shell(或命令)启动之前,由ssh执行此文件中的命令.有关更多信息,请参见sshd(8)手册页.
感谢你的回复。最终我设法找到了一个暂时有效的解决方案,但它确实有一个缺陷,我稍后会指出。
我已将以下内容添加到我的 /etc/bashrc 文件(或 /etc/bash.bashrc 无论您使用的环境):
HOST="192.168.0.1"
RHOST=`who am i | sed -n 's/.*(\([^) ]*\).*/\1/p; 1q'`
if [ "$RHOST" == "$HOST" ]; then
echo "SAY WHAT!"
#add further actions here if needed
fi
Run Code Online (Sandbox Code Playgroud)
我之前所说的缺陷实际上可能并不是缺陷。如果你已经通过 SSH 连接到系统,并且想要通过 SSH 连接到位于同一 IP 上的主机,那么ssh root@your-host who am i会打印“your-host”,但我认为应该是这样。
不用说,sed可以修改上述语句,以便您也可以捕获用户名,并且可以扩展该if/else语句以满足您的需求。
再次感谢您的所有回复。
| 归档时间: |
|
| 查看次数: |
10162 次 |
| 最近记录: |