欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

macos 通过 shell 脚本得到计算机的各种信息 AG chatgpt 有大用 有大大用

我自己亲自做的 OK 有大用

计算机名           计算机版本   ip   序列号   无线mac地址 有线mac地址  当前工号 ,当前姓名   包含关键字的文件

   ok                      ok                  ok   ok            ok                     ok                          ok              ok                   ok          

计算机名称: scutil --get ComputerName 

序列号: system_profiler SPHardwareDataType | grep "Serial Number" | awk '{print $4}'

计算机版本:  sw_vers -productName      # 产品名 (如 "macOS")   sw_vers -productVersion   # 系统版本号 (如 "12.5.1")

ip: echo "$(ifconfig | grep "inet " | grep -v 127.0.0.1 | head -n 1 | awk '{print $2}')"

有线mac地址: networksetup -listallhardwareports | awk '/Hardware Port: Ethernet/{getline; getline; print $3}'  

无线mac地址: networksetup -listallhardwareports | awk '/Hardware Port: Wi-Fi/{getline; getline; print $3}'  

当前帐户名称:  whoami 或者 id -un

包含关键字的文件:  可以得到 






macos 的 shell 得到本机的ip 和 无线mac地址和有线mac地址

1) echo "IP地址: $(ifconfig | grep "inet " | grep -v 127.0.0.1 | head -n 1 | awk '{print $2}')"






你可以结合 networksetup -listallhardwareports 命令和 awkgrep 来提取有线和无线接口的 MAC 地址。下面是如何使用这些工具来获取信息的示例:

获取有线网卡(Ethernet)的 MAC 地址:

networksetup -listallhardwareports | awk '/Hardware Port: Ethernet/{getline;getline; print $3}'


解释:

  • networksetup -listallhardwareports 会列出所有网络硬件接口。

  • awk '/Hardware Port: Ethernet/{getline; print $2}' 会查找包含 "Hardware Port: Ethernet" 的行,然后使用 getline 获取下一行(即设备信息),然后再使用 getline 获取下一行(即设备信息),并打印出 MAC 地址(第二列,通常是 Ethernet Address)。

获取无线网卡(Wi-Fi)的 MAC 地址:

networksetup -listallhardwareports | awk '/Hardware Port: Wi-Fi/{getline;getline; print $3}'


解释:

  • 这个命令与上面的命令类似,但它查找的是 Wi-Fi 硬件端口,并打印出与无线网络接口相关的 MAC 地址。

通过 grepawk 组合:

如果你想使用 grepawk 来提取 MAC 地址,可以这样做:

获取有线网卡的 MAC 地址:

networksetup -listallhardwareports | grep -A 2 "Hardware Port: Ethernet" | grep "Ethernet Address" | awk '{print $3}'


获取无线网卡的 MAC 地址:

networksetup -listallhardwareports | grep -A 2 "Hardware Port: Wi-Fi" | grep "Ethernet Address" | awk '{print $3}'


解释:

  1. grep -A 2 "Hardware Port: Ethernet":查找并打印 Hardware Port: Ethernet 这一行及其后面的两行(即设备信息)。

  2. grep "Ethernet Address":从结果中查找包含 Ethernet Address 的行。

  3. awk '{print $3}':从结果中提取第三列,即 MAC 地址。

最终脚本示例:

echo "Ethernet MAC Address:" networksetup -listallhardwareports | grep -A 2 "Hardware Port: Ethernet" | grep "Ethernet Address" | awk '{print $3}' echo "Wi-Fi MAC Address:" networksetup -listallhardwareports | grep -A 2 "Hardware Port: Wi-Fi" | grep "Ethernet Address" | awk '{print $3}'


这个脚本会输出有线网卡和无线网卡的 MAC 地址。

注意:

  • networksetup 输出的接口名称和顺序可能会有所不同,取决于硬件配置,使用 grepawk 进行文本提取时要确保提取正确的字段。

  • 如果有多个无线或有线接口(比如同时使用多个网络适配器),你可能需要更具体的接口名或者手动检查输出。


macos 的 shell 得到本机的计算机名 和版本号

获取 MacOS 本机计算机名和系统版本号

获取计算机名

在 MacOS 的 shell 中,可以使用以下命令获取计算机名:

bash
# 简短主机名 (通常设置的计算机名) scutil --get ComputerName # 完整主机名 (包括.domain后缀) scutil --get HostName # 本地主机名 (用于Bonjour/mDNS) scutil --get LocalHostName

获取系统版本号

bash
# 获取完整的系统版本信息 sw_vers # 单独获取各部分版本信息 sw_vers -productName      # 产品名 (如 "macOS") sw_vers -productVersion   # 系统版本号 (如 "12.5.1") sw_vers -buildVersion     # 构建版本号

组合命令(一次性获取所有信息)

bash
echo "计算机信息:" echo "------------------" echo "计算机名(ComputerName): $(scutil --get ComputerName)" echo "主机名(HostName): $(scutil --get HostName)" echo "本地主机名(LocalHostName): $(scutil --get LocalHostName)" echo echo "系统版本:" echo "------------------" echo "产品名: $(sw_vers -productName)" echo "系统版本: $(sw_vers -productVersion)" echo "构建版本: $(sw_vers -buildVersion)"

其他有用的系统信息命令

bash
# 获取硬件信息 system_profiler SPHardwareDataType # 获取操作系统发布日期 system_profiler SPInstallHistoryDataType | grep -A 1 "macOS Installer" | tail -n 1

注意:

  • 如果 HostName 未设置,scutil --get HostName 可能会返回错误

  • LocalHostName 是网络可见的名称,通常用于本地网络服务发现



macos 的 shell 得到本机的 序列号

获取 MacOS 本机序列号

在 MacOS 的 shell 中,可以使用以下方法获取设备的序列号:

方法一:使用 system_profiler 命令(推荐)

bash
system_profiler SPHardwareDataType | grep "Serial Number" | awk '{print $4}'

或更简洁的版本:

bash
system_profiler SPHardwareDataType | awk '/Serial/ {print $4}'

方法二:使用 ioreg 命令

bash
ioreg -l | grep IOPlatformSerialNumber | awk -F'"' '{print $4}'

方法三:使用 nvram 命令

bash
nvram -p | grep -i "system.serial" | awk '{print $2}'

方法四:直接读取硬件信息(适用于较新 macOS)

bash
/usr/sbin/system_profiler SPHardwareDataType | awk '/Serial/ {print $4}'

方法五:使用 sysctl 查看硬件信息(包含部分序列号数据)

bash
sysctl -n hw.model

组合命令(获取完整硬件信息)

bash
echo "序列号: $(system_profiler SPHardwareDataType | awk '/Serial/ {print $4}')" echo "硬件型号: $(sysctl -n hw.model)" echo "硬件UUID: $(ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}')"

注意:

  1. 这些命令都需要在管理员权限下运行(虽然通常用户权限也能获取序列号)

  2. 不同 Mac 机型、不同 macOS 版本可能有略微不同的输出格式

  3. 序列号是设备的唯一标识符,分享时请注意隐私安全




 

普通分类: