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

如何使用Ansible对运行VXWorks的老旧设备执行SSH命令与文件传输?

用Ansible管理VXWorks老旧设备的解决方案

当然可以用Ansible搞定你的VXWorks设备自动化!针对你提到的三个核心问题,我给你逐个拆解:

1. 登录非Linux设备执行命令

完全没问题!Ansible的raw模块就是专门为这种没有Python环境的老旧/非Linux设备设计的——它不需要目标机器安装任何Ansible依赖,直接通过SSH执行原始命令。

配置要点:

在你的inventory文件里,给VXWorks设备指定SSH连接参数:

[vxworks_devices]
device1 ansible_host=192.168.1.10 ansible_user=admin ansible_password=your_pass ansible_connection=ssh

Playbook示例:

- name: Execute show commands on VXWorks
  hosts: vxworks_devices
  gather_facts: no  # 关闭事实收集,因为VXWorks不支持
  tasks:
    - name: Run show system info
      raw: show system info
      register: system_info

    - name: Print command output
      debug:
        msg: "{{ system_info.stdout }}"

如果你的设备提示符非标准,偶尔遇到交互式场景(比如需要确认操作),可以搭配expect模块来处理,不过大部分show类命令是非交互式的,用raw就足够了。

2. 执行SCP/SFTP文件下载

可以实现!Ansible的fetch模块能通过SSH(依赖远程设备支持SCP/SFTP子系统)将文件从VXWorks设备拉取到本地。如果需要上传文件,因为VXWorks没有Python,你可以用raw模块直接执行scp命令。

下载文件示例(fetch模块):

- name: Fetch log file from VXWorks
  hosts: vxworks_devices
  gather_facts: no
  tasks:
    - name: Pull system log to local
      fetch:
        src: /var/log/system.log  # 远程设备的文件路径
        dest: ./vxworks_logs/     # 本地保存目录(会自动创建主机名子目录)
        flat: yes  # 可选:如果不想生成主机名子目录,直接保存文件

上传文件示例(raw模块+scp):

- name: Upload config file to VXWorks
  hosts: vxworks_devices
  gather_facts: no
  tasks:
    - name: Copy local config to remote
      raw: scp /local/path/new_config.cfg {{ ansible_user }}@{{ ansible_host }}:/remote/path/
      delegate_to: localhost  # 让本地执行scp命令

3. 获取show类命令的原始输出

非常简单!不管用raw还是command模块,命令的原始标准输出都会被保存在模块返回结果的stdout字段里。你只需要用register关键字把结果存到变量里,之后就可以直接调用这个变量的stdout属性。

示例:

- name: Capture raw show output
  hosts: vxworks_devices
  gather_facts: no
  tasks:
    - name: Run show interface status
      raw: show interface status
      register: if_status

    - name: Display raw output
      debug:
        var: if_status.stdout

    # 也可以把输出保存到本地文件
    - name: Save output to local file
      copy:
        content: "{{ if_status.stdout }}"
        dest: ./vxworks_if_status.log
      delegate_to: localhost

额外注意事项

  • 确保你的VXWorks设备的SSH服务器支持SCP/SFTP子系统(大部分老旧设备的SSH服务都带这个功能,如果不行可以手动确认)
  • 如果遇到SSH连接的特殊问题,可以在inventory里添加ansible_ssh_common_args参数调整SSH选项,比如跳过主机密钥检查:ansible_ssh_common_args="-o StrictHostKeyChecking=no"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:15:36