fly*_*ire 151 linux ssh networking ip-address
我有一个脚本由一个用SSH登录服务器的人运行.
有没有办法自动找出用户连接的IP地址?
当然,我可以问用户(这是程序员的工具,所以没问题),但如果我发现它会更酷.
小智 243
检查是否有一个名为的环境变量:
$SSH_CLIENT
Run Code Online (Sandbox Code Playgroud)
要么
$SSH_CONNECTION
Run Code Online (Sandbox Code Playgroud)
(或任何其他环境变量)在用户登录时设置.然后使用用户登录脚本处理它.
提取IP:
$ echo $SSH_CLIENT | awk '{ print $1}'
1.2.3.4
$ echo $SSH_CONNECTION | awk '{print $1}'
1.2.3.4
Run Code Online (Sandbox Code Playgroud)
vnc*_*ado 101
您可以使用以下命令:
server:~# pinky
Run Code Online (Sandbox Code Playgroud)
会给你这样的东西:
Login Name TTY Idle When Where
root root pts/0 2009-06-15 13:41 192.168.1.133
Run Code Online (Sandbox Code Playgroud)
小智 29
请尝试以下方法获取IP地址:
who am i|awk '{ print $5}'
Run Code Online (Sandbox Code Playgroud)
小智 5
who am i | awk '{print $5}' | sed 's/[()]//g' | cut -f1 -d "." | sed 's/-/./g'
export DISPLAY=`who am i | awk '{print $5}' | sed 's/[()]//g' | cut -f1 -d "." | sed 's/-/./g'`:0.0
Run Code Online (Sandbox Code Playgroud)
我通过ssh登录时使用它来确定会话的DISPLAY变量,并且需要显示远程X.
小智 5
改进先前的答案。提供 IP 地址而不是主机名。--ips 在 OS X 上不可用。
who am i --ips|awk '{print $5}' #ubuntu 14
Run Code Online (Sandbox Code Playgroud)
更通用,将 OS X 10.11 的 5 美元改为 6 美元:
WORKSTATION=`who -m|awk '{print $5}'|sed 's/[()]//g'`
WORKSTATION_IP=`dig +short $WORKSTATION`
if [[ -z "$WORKSTATION_IP" ]]; then WORKSTATION_IP="$WORKSTATION"; fi
echo $WORKSTATION_IP
Run Code Online (Sandbox Code Playgroud)
获取最近登录计算机的用户列表的简单命令是last
。这是最近的第一个排序,因此last | head -n 1
将显示最后一次登录。但这可能不是当前登录的用户。
示例输出:
root pts/0 192.168.243.99 Mon Jun 7 15:07 still logged in
admin pts/0 192.168.243.17 Mon Jun 7 15:06 - 15:07 (00:00)
root pts/0 192.168.243.99 Mon Jun 7 15:02 - 15:06 (00:03)
root pts/0 192.168.243.99 Mon Jun 7 15:01 - 15:02 (00:00)
root pts/0 192.168.243.99 Mon Jun 7 13:45 - 14:12 (00:27)
root pts/0 192.168.243.99 Mon May 31 11:20 - 12:35 (01:15)
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
184356 次 |
最近记录: |