H3C Comware系统的调度任务(scheduler job)本身并不支持$date、$hostname这类变量。命令怎么写,系统就原样执行,无法动态替换。
不过,要实现包含日期和主机名的动态文件名,通常有以下几种替代方案:
archive configuration 功能(推荐)这是H3C设备内置的配置归档功能,最为简单可靠,无需额外脚本。
设置备份位置和文件名前缀:在系统视图下,指定一个本地目录和文件名前缀。
这条命令会将配置文件保存在 flash:/archive/ 目录下,并以 my_archive 作为文件名前缀。
设置自动备份:配置系统按固定时间间隔自动备份当前配置。
此命令会每隔1440分钟(24小时)自动备份一次。
文件命名规则:备份文件会自动命名为 前缀_序号.cfg 的格式,例如 my_archive_1.cfg、my_archive_2.cfg。序号会自动递增,最大到1000后重置。
注意:此方案生成的文件名不含日期和主机名,但能自动保留多个历史版本,且配置简单。
如果你的设备支持Tcl,可以实现包含日期和主机名的文件名。
核心思路:在Tcl脚本中,通过命令获取系统时间(clock)和主机名(sysname),组合成动态文件名,再执行上传命令。
脚本示例:创建一个Tcl脚本,内容大致如下:
这种方式不依赖交换机本身,而是由外部服务器主动发起备份,可以实现最丰富的功能。
实现方式:在服务器上(如Linux)编写Python、Shell等脚本,通过SSH登录交换机,执行命令获取配置,然后以包含日期和主机名的格式保存。
触发方式:在服务器上配置crontab等定时任务,定期执行该脚本
一、先说核心结论(H3C Comware V5/V7 原生自动备份 archive 机制)
1、原生自带内置变量(无需脚本)
时间变量(等价你说的 $date,系统自动拼接,不需要手动写变量)
开启 archive configuration server 自动上传 SFTP/SCP/FTP 时:
最终文件名规则:
filename-prefix_YYYYMMDD_HHMMSS.cfg
YYYYMMDD = 年月日、HHMMSS = 时分秒,设备自动追加时间戳,自带日期时间,等同于 $date 效果。
重点:原生 archive 机制【没有内置 $hostname 主机名变量】
官方 filename-prefix 只能写固定字符串,不能填入 $sysname/$hostname 这类系统变量。
举例:
plaintext
archive configuration server scp user backup password simple xxx 192.168.1.10 directory sw_backup filename-prefix SW_INTERVAL interval 1440
生成文件:SW_INTERVAL_20260806_102035.cfg
只能前缀固定,无法自动把本机主机名嵌进去。
2、想要文件名自动带上本机主机名(两种实现方案)
方案 A:定时任务 + scheduler+TCL 脚本(推荐,Comware V7/V5 均支持,完美实现 hostname + 时间)
原理:设备内置 TCL,读取本机 sysname(主机名)拼接时间,手动 put 上传配置至 SFTP。
完整配置示例(上传到 SFTP 服务器 192.168.1.10):
shell
# 1、创建定时任务
scheduler job BackupCfg
job cli tclsh
job cli {
set hostname [sysname]
set timestr [clock format [clock seconds] -format "%Y%m%d_%H%M%S"]
save force
scp startup.cfg backup:123456@192.168.1.10:/sw_backup/${hostname}_${timestr}.cfg
}
# 2、每天凌晨2点执行一次
scheduler schedule DailyBackup job BackupCfg time 02:00
最终 SFTP 服务器生成文件名:SW_CORE_20260806_020000.cfg
[sysname] = 获取本机主机名,对应你要的「主机名函数」
clock format = 日期时间函数,等价 $date。
方案 B:外网中控服务器(Ansible/Python 集中备份)
中控服务器遍历所有交换机 SSH 登录,获取设备 hostname + 当前时间,拼接文件名上传,适合几十上百台设备批量管理。
二、两种备份方式完整对比
方式 1:原生 archive configuration(简单、无 hostname 变量)
优点:配置极简、稳定、不用脚本;
缺点:文件名只能固定前缀,不能自动携带交换机主机名。
完整 SFTP 自动备份配置:
system-view
# 开启自动备份至SCP(SFTP)服务器
archive configuration server scp user backup password simple SFTP密码 192.168.1.10 directory backup_dir filename-prefix SW interval 1440
# interval 1440 = 每隔1440分钟=1天备份一次
archive configuration interval 1440
产出文件:SW_20260806_020000.cfg。
方式 2:Scheduler+TCL(自由拼接 hostname+date,推荐多交换机场景)
可用内置 TCL 内置函数列表:
[sysname]:获取本机主机名(hostname 变量)
[clock format [clock seconds] -format "%Y%m%d_%H%M%S"]:获取时间戳(date 变量)
[display device name] 获取设备型号。
三、补充常见问题
V5 老设备(如 WX6103E、S5120)是否支持 TCL?
V5 后期版本支持 TCL;极早期精简 V5 版本无 tclsh,只能用方案 1 固定前缀备份,靠文件夹区分不同设备。
为什么官方 archive 不支持 hostname 变量?
Comware 原生 archive 设计初衷为单设备本地备份,远程备份仅追加时间戳,未开放系统变量注入文件名。
SFTP 改用 FTP 只需要把配置里的 scp 替换为 ftp 即可。
四、最简可用成品脚本(每天凌晨 2 点自动上传,文件名 = 主机名_日期.cfg)
plaintext
system-view
scheduler job BACKUP_CONFIG
job cli tclsh
job cli {
set hn [sysname]
set dt [clock format [clock seconds] -format "%Y%m%d_%H%M%S"]
save force
scp startup.cfg backup:Passw0rd@192.168.10.20:/backup/${hn}_${dt}.cfg
}
scheduler schedule BACKUP_CRON job BACKUP_CONFIG time 02:00:00
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
就是用什么函数表示主机名