將指令輸出轉為圖片

最近需要連到遠端主機取得截圖,那就在想是不是有方法可以做到?

稍微找了網路的資訊,很快就找到可以使用 ImageMagick 來轉換文字為圖片,那麼就可以用 Ansible 了。

首先為了避免每台主機都安裝 ImageMagick,所以是在執行 ansible-playbook 的主機,也就是本機上安裝 ImageMagick,然後再連線到遠端執行指令,取得指令輸出後,再到本機用 ImageMagick 來轉換。

依據上述的邏輯,很快就可以寫出 playbook 如下:

---
- name: Capture command output and convert to image
  hosts: all

  tasks:
  - name: Display content of /etc/redhat-release
    shell: cat /etc/redhat-release
    register: redhat_release_result

  - name: hostname
    shell: hostname
    register: hostname_result

  - name: Convert command output as image
    shell: echo -e "{{ hostname_result.stdout }}\n{{ redhat_release_result.stdout }}" | convert label:@- {{ hostname_result.stdout }}.png
    delegate_to: localhost

參考資料

How To Save Linux Command Output To An Image Or A Text File