Comente, Uncomment, altere a configuração com base na string, adicione linha do terminal O

4

Eu tenho que editar alguns arquivos para descomentar uma linha, alterar um valor nessa linha ou descomentar uma linha. Estou tentando fazer isso através de um script bash.

Estou tentando editar /etc/ssh/sshd_config e alterar

IgnoreRhosts yes
#RhostsRSAAuthentication no

para

IgnoreRhosts no
RhostsRSAAuthentication no

e altere

#PermitRootLogin yes

para

PermitRootLogin no
AllowUsers mroberts

e também para editar o arquivo /etc/pam.d/system-auth para mudar de

password sufficient pam_unix.so try_first_pass use_authtok nullok md5

para

password sufficient pam_unix.so try_first_pass use_authtok nullok md5 shadow

Eu também preciso adicionar esta linha ao arquivo /etc/pam.d/system-auth :

/etc/pam.d/system-auth file password required pam_unix.so remember=10

Eu tenho feito tudo isso manualmente usando vi e posso fazer as alterações através desse editor. No entanto, tenho que executar esse procedimento em muitos hosts e não posso repetir o processo um host de cada vez. Eu cometi um erro em um onde eu esqueci de adicionar AllowUsers mroberts e fiquei fora do host por quase 36 horas.

Não sei como pesquisar uma linha e alterar parte dela, mas não a linha inteira.

Existe uma maneira de fazer essas alterações a partir do terminal ou através de um script bash?

    
por W R 20.07.2016 / 04:45

1 resposta

4

Fazendo muitas alterações de uma só vez

  1. Pegue o arquivo original e salve-o como sshd_config.orig .

  2. Edite sshd_config para o conteúdo do seu coração.

  3. Executar

    diff sshd_config.orig sshd_config >config.patch
    

    Mantenha o arquivo config.patch em algum lugar seguro.

Agora, sempre que você tiver uma versão nova e não editada de sshd_config e quiser aplicar as mesmas edições, execute:

patch sshd_config /path/to/config.patch

Isso aplicará as mesmas edições ao novo arquivo ou avisará se houver alguma inconsistência que não possa ser resolvida sem sua ajuda.

Fazendo alterações individuais

O Unix também possui poderosas ferramentas de linha de comando, sem necessidade de editor, para fazer alterações em arquivos.

Usando sed , por exemplo:

sed -i.bak 's/IgnoreRhosts yes/IgnoreRhosts no/' sshd_config

Ou, executando a mesma alteração com o GNU awk:

gawk -i inplace '=="IgnoreRhosts" {="no"} 1' sshd_config

A abordagem patch facilita a realização de várias alterações de uma só vez. Para números menores de alterações, sed e awk excel. Para saber mais sobre sed , consulte, por exemplo, este tutorial . Para saber mais sobre awk , consulte, por exemplo, este tutorial .

    
por John1024 20.07.2016 / 05:31