如何通过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的位置 - 无效行过滤:跳过空行和注释行,确保只处理有效服务器信息
- 字段拆分逻辑:
- 按空格拆分每行内容,分离出「主机名+IP组合字段」「加密类型」「密钥」
- 按逗号拆分组合字段,得到独立的主机名和IP地址
- 变量赋值:将拆分后的值分别存入
HOST、IP_ADDR、ENC_TYP、KEY变量 - 文件写入:把每台服务器的信息格式化后追加到输出文件中
使用步骤
- 将脚本保存为
extract_hosts.sh - 赋予执行权限:
chmod +x extract_hosts.sh - 运行脚本:
./extract_hosts.sh - 查看结果文件:
cat hostname.txt
内容的提问来源于stack exchange,提问作者Mr.
相关产品推荐
相关产品推荐

