当前位置: 首页 > news >正文

Linux命令-pinky(轻量级finger查询工具)

Linux命令-pinky(轻量级finger查询工具)

📋快速参考pinky是 GNU coreutils 的一部分,用于查询远程主机上的用户信息(finger 协议)。它是finger命令的简化版本,输出更简洁,适合脚本调用。


📌 目录

  • 命令简介
  • 语法格式
  • 常用选项
  • 输出字段说明
  • 实战示例
  • 与其他命令对比
  • 常见问题
  • 自动化脚本

🔰 命令简介

pinky是一个轻量级 finger 查询工具,用于查询远程主机上的用户信息。它通过Finger 协议(RFC 1288)与远程主机通信,获取用户登录状态、空闲时间等信息。

💡 适用场景

场景说明
远程用户查询查询远程主机上有哪些用户在线
脚本集成输出格式简单,适合脚本解析
快速检查finger命令更轻量,启动更快

⚠️注意:现代系统中 Finger 协议通常被禁用(安全风险),pinky主要用于查询允许 Finger 协议的主机


📖 语法格式

pinky[选项][user@]host

参数说明

参数说明
user可选指定查询的用户名(不指定则查询所有用户)
host必填远程主机地址(IP 或域名)

基本用法

# 查询远程主机上的所有用户pinky example.com# 查询指定用户pinky alice@example.com

⚙️ 常用选项

选项说明
-l, --long使用长格式输出(更多字段)
-b, --brief使用简短格式输出(默认)
-s, --short使用极简格式输出
-h, --help显示帮助信息
-V, --version显示版本信息

输出格式对比

格式选项输出字段适用场景
-b(默认)用户名、终端、登录时间、闲置时间快速查看
-l(长格式)包含办公室、电话等扩展信息详细信息查询
-s(短格式)仅用户名和终端脚本解析

📊 输出字段说明

默认输出(brief 格式)

Login TTY FROM IDLE Host alice tty1 192.168.1.100 2m workstation bob tty2 10.0.0.5 10m laptop
字段说明
Login用户名
TTY终端类型(tty1,pts/0等)
FROM来源 IP 地址或主机名
IDLE闲置时间(2m= 2分钟,1h= 1小时)
Host来源主机名(如果有反向 DNS)

长格式输出(-l 选项)

Login name: alice In real life: Alice Smith Office: /office/301 Home phone: +1-555-1234 Directory: /home/alice Shell: /bin/bash Last login: Thu Jun 12 09:30:00 2026 on tty1 from workstation New mail received: Thu Jun 12 08:00:00 2026

🔥 实战示例

1️⃣ 基本查询

# 查询远程主机上的所有用户pinky example.com# 查询指定用户pinky alice@example.com

输出示例

Login TTY FROM IDLE Host alice tty1 192.168.1.100 2m workstation

2️⃣ 使用长格式查询

# 获取详细信息pinky-lexample.com# 查询指定用户(长格式)pinky-lalice@example.com

输出示例

Login name: alice In real life: Alice Smith Office: /office/301 Home phone: +1-555-1234 Directory: /home/alice Shell: /bin/bash Last login: Thu Jun 12 09:30:00 2026 on tty1 from workstation

3️⃣ 脚本集成(解析输出)

#!/bin/bash# 查询远程主机,检查是否有用户在线HOST="example.com"USERS=$(pinky-s"$HOST"|tail-n+2|wc-l)if["$USERS"-gt0];thenecho"✅$HOST上有$USERS个用户在线"pinky-b"$HOST"elseecho"⚠️$HOST上没有用户在线或无法查询"fi

关键点

  • 使用-s(short) 格式输出更简洁,适合脚本解析
  • tail -n +2跳过标题行
  • wc -l统计用户数量

4️⃣ 批量查询多个主机

#!/bin/bash# 批量查询多个主机的用户状态HOSTS=("host1.example.com""host2.example.com""host3.example.com")forhostin"${HOSTS[@]}";doecho"📡 查询$host..."ifping-c1"$host"&>/dev/null;thenecho"✅$host可达,用户列表:"pinky-b"$host"2>/dev/null||echo" Finger 协议被禁用"elseecho"❌$host不可达"fiecho"---"done

5️⃣ 结合finger命令对比

# 使用 pinky 查询(轻量级)pinky example.com# 使用 finger 查询(功能更全)finger @example.com# 对比输出格式echo"=== pinky (brief) ==="&&pinky-bexample.comecho"=== finger ==="&&finger @example.com

区别

  • pinky:输出简洁,适合脚本
  • finger:输出详细,支持更多选项(如-m,-s,-l

🔍 与其他命令对比

命令协议输出详细度适用场景
pinkyFinger⭐⭐脚本调用、快速查询
fingerFinger⭐⭐⭐⭐交互式查询、详细信息
who本地⭐⭐查询本地登录用户
w本地⭐⭐⭐查询本地用户 + 正在执行的命令
users本地仅显示用户名列表

典型对比示例

# 查询本地用户(who 命令)who# 输出:alice tty1 2026-06-12 09:30# bob tty2 2026-06-12 09:35# 查询远程用户(pinky 命令)pinky example.com# 输出:Login TTY FROM IDLE Host# alice tty1 192.168.1.100 2m workstation

💡提示pinkyfinger查询远程主机,而who/w/users查询本地系统


❓ 常见问题

Q1:pinky命令找不到?

A: 安装coreutils包:

# Debian/Ubuntusudoapt-getinstallcoreutils# RHEL/CentOSsudoyuminstallcoreutils# Arch Linuxsudopacman-Scoreutils

Q2: 查询远程主机时提示 “Connection refused”?

A: 远程主机的 Finger 服务未运行被防火墙拦截

排查步骤

# 1. 检查网络连通性pingexample.com# 2. 检查 Finger 端口(79)是否开放nc-zvexample.com79# 或telnet example.com79# 3. 如果端口关闭,说明远程主机未运行 Finger 服务echo"⚠️ 远程主机未运行 Finger 服务(端口 79 未开放)"

🔒安全提示:现代系统通常禁用 Finger 服务(端口 79),因为它会暴露用户信息(安全风险)。


Q3: 如何启用 Finger 服务(服务器端)?

A: 在允许 Finger 查询的主机上安装并启动服务:

# Debian/Ubuntusudoapt-getinstallfingerdsudosystemctlenablefingerdsudosystemctl start fingerd# RHEL/CentOSsudoyuminstallfinger-serversudosystemctlenablefingersudosystemctl start finger

验证服务运行

# 检查端口 79 是否监听sudoss-tlnp|grep:79# 或sudonetstat-tlnp|grep:79

Q4:pinkyfinger的输出有什么区别?

A: 对比示例:

# pinky 输出(简洁)pinky-bexample.com# Login TTY FROM IDLE Host# alice tty1 192.168.1.100 2m workstation# finger 输出(详细)finger @example.com# Login Name TTY Idle Login Time Office Phone# alice Alice Sm tty1 2m Jun 12 09:30 /off/301 +1-555

关键区别

  • pinky:输出字段少,适合脚本解析
  • finger:输出字段多(包含办公室、电话等),适合人工阅读

🤖 自动化脚本

脚本1:定期检查远程主机用户活动

#!/bin/bash# 定期检查远程主机用户活动,如有新用户登录则告警HOST="example.com"LOG_FILE="/var/log/pinky_monitor.log"INTERVAL=300# 5分钟检查一次whiletrue;doTIMESTAMP=$(date'+%Y-%m-%d %H:%M:%S')USERS=$(pinky-s"$HOST"2>/dev/null|tail-n+2)if[-n"$USERS"];thenecho"[$TIMESTAMP]$HOST用户活动:">>"$LOG_FILE"echo"$USERS">>"$LOG_FILE"echo"---">>"$LOG_FILE"elseecho"[$TIMESTAMP]$HOST无用户活动">>"$LOG_FILE"fisleep"$INTERVAL"done

使用方法

# 赋予执行权限chmod+x pinky_monitor.sh# 后台运行nohup./pinky_monitor.sh&# 查看日志tail-f/var/log/pinky_monitor.log

脚本2:HTML 格式输出(适合邮件报告)

#!/bin/bash# 生成 HTML 格式的用户报告HOST="example.com"HTML_FILE="pinky_report.html"cat>"$HTML_FILE"<<'EOF' <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Pinky 查询报告</title> <style> body { font-family: Arial, sans-serif; margin: 20px; } table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid #ddd; padding: 8px; text-align: left; } th { background-color: #f2f2f2; } tr:hover { background-color: #f5f5f5; } </style> </head> <body> <h1>🖥️ 远程主机用户报告</h1> <p>生成时间:<kbd>$(date)</kbd></p> <h2>主机:<kbd>$HOST</kbd></h2> <table> <tr><th>用户名</th><th>终端</th><th>来源 IP</th><th>闲置时间</th><th>主机名</th></tr> EOF# 解析 pinky 输出并转换为 HTML 表格行pinky-b"$HOST"2>/dev/null|tail-n+2|whileread-rline;doLOGIN=$(echo"$line"|awk'{print $1}')TTY=$(echo"$line"|awk'{print $2}')FROM=$(echo"$line"|awk'{print $3}')IDLE=$(echo"$line"|awk'{print $4}')HOSTNAME=$(echo"$line"|awk'{print $5}')cat>>"$HTML_FILE"<<ROW_EOF <tr><td>$LOGIN</td><td>$TTY</td><td>$FROM</td><td>$IDLE</td><td>$HOSTNAME</td></tr> ROW_EOFdonecat>>"$HTML_FILE"<<'EOF' </table> </body> </html> EOFecho"✅ HTML 报告已生成:$HTML_FILE"

输出示例

<!DOCTYPEhtml><html><head><title>Pinky 查询报告</title></head><body><h1>🖥️ 远程主机用户报告</h1><p>生成时间:<kbd>Thu Jun 12 10:00:00 CST 2026</kbd></p><h2>主机:<kbd>example.com</kbd></h2><table><tr><th>用户名</th><th>终端</th><th>来源 IP</th><th>闲置时间</th><th>主机名</th></tr><tr><td>alice</td><td>tty1</td><td>192.168.1.100</td><td>2m</td><td>workstation</td></tr></table></body></html>

📚 扩展阅读

Finger 协议(RFC 1288)

  • 端口:79(TCP)
  • 用途:查询远程主机的用户信息
  • 安全风险暴露用户名、登录时间等敏感信息,现代系统通常禁用

相关命令

命令说明用法
finger功能完整的 Finger 客户端finger @host
who显示本地登录用户who
w显示本地用户 + 正在运行的命令w
users显示本地用户名列表users
last显示登录历史last

🎯 总结

要点说明
命令类型远程用户查询工具(Finger 协议)
输出特点简洁,适合脚本解析
典型用法pinky hostpinky user@host
适用场景查询允许 Finger 协议的主机
注意事项现代系统通常禁用 Finger 服务(端口 79)

快速参考卡片

# 🚀 快速命令pinkyhost# 查询主机上的所有用户pinky user@host# 查询指定用户pinky-lhost# 长格式输出pinky-shost# 短格式输出(适合脚本)# 🔍 检查 Finger 服务是否运行nc-zvhost79# 检查端口 79telnethost79# 连接 Finger 服务# 📋 解析输出(脚本用)pinky-shost|tail-n+2|awk'{print $1}'# 仅提取用户名

📢 注意事项

  1. Finger 服务通常不启用:现代 Linux 发行版默认不安装Finger 服务器,需要手动安装fingerdin.fingerd
  2. 防火墙可能拦截:即使安装了 Finger 服务,防火墙也可能拦截端口 79
  3. 安全风险:Finger 协议会暴露用户信息,建议在内部网络使用,外部网络禁用。
  4. 替代方案:如果需要查询用户信息,可以考虑使用SSH+who/w命令(更安全)。

🏷️ 标签

Linux运维网络工具用户管理Finger协议


📅 最后更新

  • 日期:2026-06-13
  • 适用系统:GNU/Linux (所有发行版)
  • 命令版本:GNU coreutils 9.x

上一篇:ping - 网络连通性测试
下一篇:pipe - 管道命令(待发布)

http://www.jsqmd.com/news/1013500/

相关文章:

  • 终极指南:用Awesome-Dify-Workflow轻松构建专业级AI工作流 [特殊字符]
  • UniversalUnityDemosaics:3分钟搞定Unity游戏视觉恢复的终极指南 [特殊字符]
  • PowerQUICC II IMA微码实现:ATM反向复用的嵌入式软硬件协同设计
  • 2026武汉相亲机构实力盘点:合规甄选与高效脱单+正规交友渠道全指南 - 互联网科技品牌测评
  • 重新定义macOS窗口管理:DockDoor如何解决多任务处理的根本问题
  • DayZ社区离线模组:5大核心功能解锁终极单机生存体验
  • 人类为什么不找出一种普通的方法解决每个人的赚钱的问题呢?这就是工作!
  • 爱回收门店全程实测,估价和成交价到底差多少? - 新闻快传
  • MPC8306 eLBC内存控制器:错误处理与NAND Flash配置实战
  • TV Bro:重新定义智能电视浏览体验的完整解决方案
  • 如何高效使用Qwerty Learner:本地词库存储与英语学习技术完全指南
  • 2026年实测10款降AI率软件推荐:免费与付费全对比,顺利通过AI率检测必看
  • 在爱回收卖手机,估价和到手价能差多少 - 新闻快传
  • MPC8260 IMA控制器寄存器配置实战:链路聚合与延迟补偿详解
  • Xbox手柄冲动触发器终极解锁:X1nput让PC游戏震动体验全面升级
  • 5个技巧:用Explorer Tab Utility彻底告别Windows文件资源管理器窗口混乱
  • Python之osidb-bindings包语法、参数和实际应用案例
  • 如何自动上传文件到百度网盘?
  • 爱回收回收手机安全吗?我拆解了整条隐私处理链 - 新闻快传
  • 如何快速掌握英雄联盟工具包:3大核心功能完整指南
  • 绘本机有必要买吗?用奇多多三个月,我终于能给出明确答案 - 新闻快传
  • 如何快速合并B站缓存视频?Android平台终极解决方案
  • Qwerty Learner:用打字重塑你的英语学习体验
  • Windows右键菜单终极定制指南:ContextMenuManager让你的右键菜单更高效
  • LDDC歌词工具终极指南:如何快速实现精准歌词下载与格式转换
  • 爱回收回收手机安全吗?从隐私清除到门店交付的真相 - 新闻快传
  • foobar2000 DUI配置深度解析:foobox中文版的技术实现与美学实践
  • 三步告别电脑噪音:用FanControl打造静音高效的散热系统
  • 3分钟掌握DockDoor:免费解锁macOS窗口预览的终极指南
  • 3分钟搞定:如何让Figma界面变成全中文?