运行 Ansible 时,更改 ssh 终端背景颜色会创建远程目录作为副作用

运行 Ansible 时,更改 ssh 终端背景颜色会创建远程目录作为副作用

~/.ssh/config我添加了一个本地命令这会将我的终端背景更改为漂亮的覆盆子颜色:

Host raspberrypi.local
    LocalCommand printf '\033]11;#220505\007'

Host *
    PermitLocalCommand yes

然后,当我注销时,文件中的几个条目.bashrc会恢复背景颜色:

colorsh() {
        \ssh $*     # use `command ssh`, `\ssh` or "ssh" to ignore alias; or infinite loop
        printf '\033]11;#050505\007'
}

alias ssh='colorsh'

谢谢布赖恩·吉尔伯特为了这个想法。

但是,当我运行一个简单的 Ansible 剧本时,它会创建一个名为的目录,其中''$'\033'']11'有一个名为的文件AnsiballZ_setup.py

删除LocalCommand我的 ssh 配置文件中的 解决了问题,但随后我失去了颜色。显然 Ansible 正在使用 ssh 与我的 pi 进行通信,文件如下inventory

local:
    hosts:
        localhost 
    vars:
        ansible_connection: local
pi:
    hosts:
        raspberrypi.local
    vars:
        ansible_user: pi
        ansible_connection: ssh

当 Ansible 使用 ssh 导致 LocalCommand 产生这种效果时,有什么想法吗?

我确实尝试将 printf 命令放入我的 .bashrc 包装函数中,但这并没有完全按照我想要的方式工作,因此正在寻找其他解决方法。

  • 主机:WSL2 上的 Ubuntu 20.04
  • 客户端:Raspberry Pi 操作系统

编辑:我尝试在 printf 字符串前面添加一个分号';\033]11;#220505\007',并且在通过 ssh 连接时看到分号出现在欢迎消息中的最小侧面。但是,第一次尝试连接就会失败,并出现以下错误:

致命:[raspberrypi.local]:无法访问! => {"changed": false, "msg": "身份验证或权限失败。某些情况下,您可能已经能够身份验证,但对目标目录没有权限。考虑更改 ansible.cfg 中的远程 tmp 路径失败的命令是:( umask 77 && mkdir -p " echo ;\u001b]11;#220505\u0007/home/pi/.ansible/tmp/ansible-tmp-1614707093.517033-188023619558789" && echo ansible-tmp-1614707093.517033-188023619558789=" echo ;\u001b]11;#220505\u0007/home/pi/.ansible/tmp/ansible-tmp-1614707093.517033-188023619558789" ),退出结果为 1", "unreachable": true}

如果 Ansible 命令通过 printf 传输,我想无论我使用什么字符串都会遇到问题。例如,我尝试'weird'作为字符串,最终得到一个目录结构weird/home/pi

相关内容