You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Shell脚本自动提取服务器主机信息到变量或文件

从known_hosts提取服务器信息的Shell脚本实现

脚本实现

#!/bin/bash

# 定义known_hosts文件路径和输出文件路径
KNOWN_HOSTS="/home/user/.ssh/known_hosts"
HOSTNAME_FILE="hostname.txt"

# 清空输出文件(若需追加内容可删除此行)
> "$HOSTNAME_FILE"

# 逐行读取known_hosts文件内容
while IFS= read -r line; do
    # 跳过空行和注释行
    [[ -z "$line" || "$line" =~ ^# ]] && continue

    # 拆分每行的字段:主机+IP组合部分、加密类型、密钥
    IFS=' ' read -r host_ip_part ENC_TYP KEY <<< "$line"

    # 拆分主机名和IP地址
    IFS=',' read -r HOST IP_ADDR <<< "$host_ip_part"

    # 打印提取的信息(可选,用于验证结果)
    echo "提取到的服务器信息:"
    echo "- 主机名: $HOST"
    echo "- IP地址: $IP_ADDR"
    echo "- 加密类型: $ENC_TYP"
    echo "- 密钥: $KEY"
    echo "------------------------"

    # 将信息写入到hostname.txt文件
    echo "主机名: $HOST | IP地址: $IP_ADDR | 加密类型: $ENC_TYP | 密钥: $KEY" >> "$HOSTNAME_FILE"
done < "$KNOWN_HOSTS"

echo "所有服务器信息已提取并保存到 $HOSTNAME_FILE"

脚本说明

  • 路径定义:先指定known_hosts的绝对路径和输出文件hostname.txt的位置
  • 无效行过滤:跳过空行和注释行,确保只处理有效服务器信息
  • 字段拆分逻辑:
    1. 按空格拆分每行内容,分离出「主机名+IP组合字段」「加密类型」「密钥」
    2. 按逗号拆分组合字段,得到独立的主机名和IP地址
  • 变量赋值:将拆分后的值分别存入HOST、IP_ADDR、ENC_TYP、KEY变量
  • 文件写入:把每台服务器的信息格式化后追加到输出文件中

使用步骤

  1. 将脚本保存为extract_hosts.sh
  2. 赋予执行权限:chmod +x extract_hosts.sh
  3. 运行脚本:./extract_hosts.sh
  4. 查看结果文件:cat hostname.txt

内容的提问来源于stack exchange,提问作者Mr.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 17:20:11