GNU/Linux >> Znalost Linux >  >> Linux

Možnost odkomentování řádku v souboru

Pokud za znakem '#' potřebujete nula nebo více mezer, mělo by stačit následující:

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

Úpravou vašeho původního kódu je přidání \s* a .*$ v regulárním výrazu.

Vysvětlení:

\s - odpovídá bílým znakům (mezery, tabulátory, zalomení řádků a posuvy formuláře)

* - určuje, že výraz nalevo od něj (\s ) může mít nula nebo více instancí ve shodě

.* - odpovídá nule nebo více libovolnému znaku

$ - odpovídá konci řádku


Za prvé, používáte špatný jazyk. U Ansible mu neříkáte, co má dělat, ale definujete požadovaný stav. Takže by to nemělo být Uncomment line form /etc/ssh/sshd_config , ale Ensure AuthorizedKeysFile is set to .ssh/authorized_keys .

Za druhé, nezáleží na tom, jaký je počáteční stav (zda je řádek zakomentován nebo ne). Musíte zadat jeden jedinečný řetězec, který identifikuje řádek.

S sshd_config to je možné jako AuthorizedKeysFile direktiva se v souboru vyskytuje pouze jednou. S jinými konfiguračními soubory to může být obtížnější.

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

Bude odpovídat libovolnému řádku obsahujícímu AuthorizedKeysFile řetězec (bez ohledu na to, zda je komentován nebo ne, nebo kolik je tam mezer) a ujistěte se, že celý řádek je:

AuthorizedKeysFile .ssh/authorized_keys

Pokud byl řádek jiný, Ansible oznámí "změněný" stav.

Při druhém spuštění Ansible najde AuthorizedKeysFile znovu a zjistit, že linka je již v požadovaném stavu, takže úlohu ukončí stavem "ok".

Jednou výhradou k výše uvedenému úkolu je, že pokud některý z řádků obsahuje komentář, jako je skutečný, záměrný komentář (například vysvětlení v angličtině obsahující řetězec AuthorizedKeysFile ), Ansible nahradí tento řádek hodnotou uvedenou v line .


Linux
  1. Kočičí čára X do čáry Y na obrovském souboru?

  2. Nemůžete najít soubor k opravě na vstupním řádku 3?

  3. Chybějící závislost na Pip3?

  1. VIM:jak přejít na přesnou linku na Ubuntu

  2. unix - počet sloupců v souboru

  3. grep bez zobrazení cesty/souboru:řádku

  1. Ansible Guide:Správa souborů pomocí Ansible

  2. Zacházení s tajemstvími ve vašich knihách Ansible

  3. Zaneprázdněná schránka Číst soubor řádek po řádku?