Digamos que eu queira editar o arquivo /etc/ssh/sshd_config no RHEL 7 para proteger nossa configuração ssh.
Quero substituir, vamos pegar a linha Ciphers, por exemplo, mantendo o original no lugar e comentando. Eu também quero ser capaz de descodificar a menor parte possível da string para evitar que o Red Hat a quebre toda vez que atualizar o rpm/instalar iso.
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Deve se tornar...
#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789 etc...
Eu tentei encontrar/adicionar nova linha em um arquivo de teste onde o nome do arquivo é testfile e o conteúdo é Este é meu arquivo de teste. Tentei adicionar Não, não é como uma nova linha e falhei miseravelmente.
sed -i '/This is my test file./aNo it's not.' testfile
Como eu faria isso e, mais importante, quais são os conceitos-chave por trás disso?
Responder1
Eu tentei com o comando sed abaixo e funcionou perfeitamente
comando
sed -i '/^Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-c/s/.*/#&\nCiphers abc-123,def-456,ghi-789/g' filename
saída
#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789
Responder2
sed -i -n 'p; s/^Ciphers/#&/p' /etc/ssh/sshd_config
-i
no lugar
-n
não imprime nada, a menos que seja explicitamente impresso
/p
no final da string de pesquisa força a impressão, substituindo efetivamente -n
a string correspondente