GNU/Linux >> Belajar Linux >  >> Linux

Baris tanda komentar yang dimungkinkan dalam file

Jika Anda memerlukan nol atau lebih spasi putih setelah karakter '#', berikut ini sudah cukup:

- name: Uncomment line from /etc/ssh/sshd_config
    lineinfile:
      dest: /etc/ssh/sshd_config
      regexp: '^#\s*AuthorizedKeysFile.*$'
      line: 'AuthorizedKeysFile    .ssh/authorized_keys'

Modifikasi kode asli Anda adalah penambahan \s* dan .*$ di regex.

Penjelasan:

\s - cocok dengan spasi putih (spasi, tab, jeda baris, dan umpan formulir)

* - menentukan ekspresi di sebelah kirinya (\s ) dapat memiliki nol atau lebih instance dalam sebuah kecocokan

.* - cocok dengan nol atau lebih karakter apa pun

$ - cocok dengan akhir baris


Pertama, Anda menggunakan bahasa yang salah. Dengan Ansible, Anda tidak memberi tahu apa yang harus dilakukan, tetapi menentukan keadaan yang diinginkan. Jadi seharusnya tidak Uncomment line form /etc/ssh/sshd_config , tapi Ensure AuthorizedKeysFile is set to .ssh/authorized_keys .

Kedua, tidak masalah apa status awalnya (apakah baris tersebut dikomentari, atau tidak). Anda harus menentukan satu string unik yang mengidentifikasi garis.

Dengan sshd_config ini dimungkinkan sebagai AuthorizedKeysFile direktif hanya terjadi sekali dalam file. Dengan file konfigurasi lain, ini mungkin lebih sulit.

- name: Ensure AuthorizedKeysFile is set to .ssh/authorized_keys
  lineinfile:
    dest: /etc/ssh/sshd_config
    regexp: AuthorizedKeysFile
    line: 'AuthorizedKeysFile    .ssh/authorized_keys'

Itu akan cocok dengan baris apa pun yang berisi AuthorizedKeysFile string (tidak peduli apakah itu dikomentari atau tidak, atau berapa banyak spasi yang ada) dan pastikan baris lengkapnya adalah:

AuthorizedKeysFile .ssh/authorized_keys

Jika garisnya berbeda, Ansible akan melaporkan status "berubah".

Pada proses kedua, Ansible akan menemukan AuthorizedKeysFile lagi dan temukan baris tersebut sudah dalam status yang diinginkan, sehingga akan mengakhiri tugas dengan status "ok".

Satu peringatan dengan tugas di atas adalah jika salah satu baris berisi komentar seperti komentar yang nyata dan disengaja (misalnya penjelasan dalam bahasa Inggris yang berisi string AuthorizedKeysFile ), Kemungkinan akan mengganti baris itu dengan nilai yang ditentukan dalam line .


Linux
  1. Panduan Ansible:Kelola File menggunakan Ansible

  2. Cat Line X Ke Line Y Pada File Besar?

  3. Pip3 Hilang Ketergantungan?

  1. VIM:cara menuju ke baris yang tepat di Ubuntu

  2. tambahkan baris ke file HANYA jika belum ada dalam file

  3. unix - membagi file .gz besar per baris

  1. Kotak Sibuk Membaca File Baris demi Baris?

  2. Tidak Dapat Menemukan File Untuk Ditambal Pada Baris Input 3?

  3. unix - hitungan kolom dalam file