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.

내 구성 파일에서 ssh를 제거하면 LocalCommand문제가 해결되었지만 색상이 사라졌습니다. 분명히 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
  • 클라이언트: 라즈베리 파이 OS

편집: printf 문자열 앞에 세미콜론을 추가하려고 시도했는데 ';\033]11;#220505\007'SSH를 통해 연결할 때 환영 메시지에 세미콜론이 최소한으로 나타나는 것을 보았습니다. 그러나 첫 번째 연결 시도는 다음 오류로 인해 실패합니다.

치명적: [raspberrypi.local]: 연결할 수 없습니다! => {"changed": false, "msg": "인증 또는 권한에 실패했습니다. 경우에 따라 인증은 가능했지만 대상 디렉터리에 대한 권한이 없을 수 있습니다. ansible에서 원격 tmp 경로를 변경하는 것을 고려하세요. 실패한 경우 cfg 명령은 다음과 같습니다. (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.

관련 정보