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 Playbookを実行すると、そのファイル''$'\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 コマンドは次のようになりますecho ;\u001b]11;#220505\u0007/home/pi/.ansible/tmp/ansible-tmp-1614707093.517033-188023619558789echo ;\u001b]11;#220505\u0007/home/pi/.ansible/tmp/ansible-tmp-1614707093.517033-188023619558789

Ansibleコマンドがprintfを介してパイプされると、どの文字列を使用しても問題が発生するようです。たとえば、'weird'文字列で試してみましたが、最終的にディレクトリ構造で終わりましたweird/home/pi

関連情報