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

信创系统资产清单采集脚本:主机名+IP+MAC 一键生成 CSV

原文链接:信创系统资产清单采集脚本:主机名+IP+MAC 一键生成 CSV

Hello,大家好啊!今天给大家带来一篇在信创终端操作系统上自动批量采集主机名、IP 和 MAC 并导出为 CSV 表格的实战文章!本方案使用 sshpass 和 Bash 脚本配合,支持从外部 IP 列表和密码文件中读取内容,轻松实现批量自动采集,是信创设备台账登记、资产管理、批量部署前信息归档的利器!欢迎大家点赞、转发、点个在看!

场景介绍

日常运维工作中,尤其是在以下场景下常常需要批量采集主机信息:

信创设备批量上架后登记 IP、MAC、主机名

网络规划前快速收集节点信息

离线环境中准备资产台账

自动化部署前环境清查

如果一个个登录再 copy 太低效,这时候一套 “免登录 + 自动生成 CSV” 的脚本就很有必要!

1.准备设备IP列表

pdsyw@pdsyw-PC:~/Desktop$ vim pdsyw_ip.txt
​
pdsyw@pdsyw-PC:~/Desktop$ cat pdsyw_ip.txt 
​
192.168.80.44

用 vim 创建并编辑了一个名为 pdsyw_ip.txt 的文件,内容是目标设备的 IP 地址,每行一个。此文件用于后续脚本读取目标设备列表。

img

2.准备对应密码

pdsyw@pdsyw-PC:~/Desktop$ vim pdsyw_passwd.txt
​
pdsyw@pdsyw-PC:~/Desktop$ cat pdsyw_passwd.txt
​
1 

创建一个名为 pdsyw_passwd.txt 的文件,里面存放对应设备的登录密码。支持:

所有设备共用同一个密码(如每行内容都为 1)。

每台设备一个密码(一一对应 pdsyw_ip.txt 中的 IP)。

脚本通过索引一一读取对应的密码。

img

3.编写批量采集脚本

pdsyw@pdsyw-PC:~/Desktop$ vim generate_host_list.sh
​
pdsyw@pdsyw-PC:~/Desktop$ cat generate_host_list.sh
​
#!/bin/bash
​​
output="host_list.csv"
​
echo "主机名,IP地址,MAC地址" > "$output"
​​
mapfile -t ip_list < pdsyw_ip.txt
​
mapfile -t pw_list < pdsyw_passwd.txt
​​
if [ "${#ip_list[@]}" -ne "${#pw_list[@]}" ]; then
​echo "错误:IP 和密码数量不一致"
​exit 1
​
fi
​​
for i in "${!ip_list[@]}"; do
​ip="${ip_list[$i]}"
​password="${pw_list[$i]}"
​​echo "正在采集:$ip"
​​sshpass -p "$password" ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no pdsyw@"$ip" '
​h=$(hostname)
​ipaddr=$(ip a | grep "inet " | grep -v "127.0.0.1" | awk "{print \$2}" | cut -d/ -f1 | head -n1)
​mac=$(ip link | awk "/ether/ {print \$2}" | head -n1)
​echo "$h,$ipaddr,$mac"
​' >> "$output"
​
done
​​
echo "所有采集完成,结果保存在 $output"

读取 IP 和密码,远程登录每台主机,采集主机名、IP、MAC 地址,并输出到 host_list.csv 文件中。关键步骤说明:

mapfile -t ip_list < pdsyw_ip.txt
​
mapfile -t pw_list < pdsyw_passwd.txt

将 IP 列表和密码列表分别读入数组。

if [ "${#ip_list[@]}" -ne "${#pw_list[@]}" ]; then
​echo "错误:IP 和密码数量不一致"
​exit 1
​
fi

校验 IP 与密码数量一致,防止数组越界。

sshpass -p "$password" ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no pdsyw@"$ip" '
​h=$(hostname)
​ipaddr=$(ip a | grep "inet " | grep -v "127.0.0.1" | awk "{print \$2}" | cut -d/ -f1 | head -n1)
​mac=$(ip link | awk "/ether/ {print \$2}" | head -n1)
​echo "$h,$ipaddr,$mac"
​
' >> "$output"

利用 sshpass + ssh 无交互登录远程主机,提取主机名(hostname)、IP 地址、MAC 地址。其中用户pdsyw可以根据实际情况调整。awk "{print $2}" 使用 \ 转义是为了在嵌套脚本中正确传递。

echo "主机名,IP地址,MAC地址" > "$output"

创建 CSV 文件,写入表头。

img

4.安装环境依赖

pdsyw@pdsyw-PC:~/Desktop$ sudo apt install sshpass -y

sshpass 是一个支持非交互式 SSH 密码输入的工具。它允许你用密码方式批量远程登录(适用于没有设置 SSH 密钥登录的设备)。确保主控终端可 SSH 到目标设备。

img

5.执行效果预览

pdsyw@pdsyw-PC:~/Desktop$ bash generate_host_list.sh
​
正在采集:192.168.80.44
​
Warning: Permanently added '192.168.80.44' (ECDSA) to the list of known hosts.
​
所有采集完成,结果保存在 host_list.csv

执行采集脚本,控制台实时输出当前采集的设备 IP。首次连接会自动将目标 IP 加入 known_hosts 列表。

img

6.输出文件

pdsyw@pdsyw-PC:~/Desktop$ cat host_list.csv 
​
主机名,IP地址,MAC地址
​
pdsyw-PC,192.168.80.44,00:0c:29:cf:46:a3

采集完成后,输出的文件内容是一个标准的 CSV 格式,便于后续导入 Excel 或数据库处理。

img

img

7、使用建议

*应用场景**建议操作*
台账登记使用WPS 表格打开 .csv 直接导入系统平台
网段清查一次性采集全网段设备,过滤活跃主机
离线备份将采集脚本与 .csv 一并打包归档
自动部署前检查结合设备名 / IP 反查对照配置表

通过这篇文章,你掌握了如何在信创终端环境中,使用脚本结合 SSH 免交互方式批量获取设备主机名、IP 地址和 MAC 地址,并输出为标准的 .csv 表格,极大提高了信息采集效率,也为后续批量运维打下良好基础。如果你觉得这篇文章实用,欢迎点赞、转发、收藏并点个在看,我们下次再见!

相关文章:

  • 汽车产业链主表及类别表设计
  • 2、Linux操作系统下,ubuntu22.04版本安装搜狗输入法
  • ACM会议模板设置单排作者数量
  • 低压电工常见知识点
  • Java——琐碎知识点一
  • 国家与省市县 标准地图服务网站 审图号地图下载
  • 【愚公系列】《Manus极简入门》005-DeepSeek与Manus的创新之处
  • camera知识学习
  • 金融数据分析(Python)个人学习笔记(13):自然语言处理
  • 服务器备份,服务器想要备份文件内容有哪些方法?
  • Arduino 入门学习笔记(五):KEY实验
  • PTA -L1-005 考试座位号
  • WPF-遵循MVVM框架创建图表的显示【保姆级】
  • SpringCloud核心组件Eureka菜鸟教程
  • LaTex、pdfLaTex、XeLaTex和luaLaTex的区别和联系
  • Docker常见命令
  • 关于指针和指针算术
  • 开发常使用的团队协作工具
  • 再谈从视频中学习:从给视频打字幕的Humanoid-X、UH-1到首个人形VLA Humanoid-VLA:迈向整合第一人称视角的通用人形控制
  • 文本向量化
  • 古籍新书·2025年春季|中国土司制度史料集成
  • 巴防长称中俄可参与克什米尔恐袭事件国际调查,外交部回应
  • 点燃“文化活火”,上海百年街区创新讲述“文化三地”故事
  • 我驻美使馆:中美并没有就关税问题磋商谈判,更谈不上达成协议
  • 印巴在克什米尔实控线附近小规模交火,巴防长发出“全面战争”警告
  • 魔都眼·上海车展④|奔驰宝马保时捷……全球豪车扎堆首秀