Eu sou um iniciante em scripts bash.Eu quero criar um script bash para instalar, instalar e configurar itens na minha caixa linux de forma automatizada.
Suponha que eu queira editar
/etc/yum.repos.d/epel.repo
pelo script bash
O que eu quero fazer é o seguinte
- Abrir arquivo /etc/yum.repos.d/epel.repo
- Encontre a seção [epel]
- Adicione uma prioridade de linha = 10 logo após a linha ativada = 1 na seção epel
Para a primeira parte eu adicionei
yum install nano
nano /etc/yum.repos.d/epel.repo
Minha pergunta é como fazer a parte 2 e 3 com script bash usando nano (se possível, caso não seja possível, mostre-me com sed)
Também em alguns momentos terei que modificar variáveis nos arquivos. Por exemplo:
- enable = 0 para ativar = 1
- Teste = "1" para Teste = "0"
- Adicione texto em uma linha. funções = para funcionar = "texto1", "texto2"
- Adicione um pouco de texto a um arquivo e salve-o (com nano)
Eu sei que é exigente, mas eu preciso criar isso para um amigo que é novato em gerenciamento de servidores. Infelizmente, não tenho tempo para estudar scripts bash desde o início, pois meus exames estão próximos. Usarei seus exemplos para escrever o script.
Pessoal, obrigado por todas as respostas que fiz com sucesso a maior parte do script bash
No entanto, tenho outro problema. Suponha que eu queira modificar o nginx.conf usando o sed. Vamos lidar com o worker_processes.
Agora eu quero usar o sed para fazer o seguinte: 1. Encontre a PRIMEIRA ocorrência de worker_processes
em que conf e substituir texto comworker_processes 4;
Nota especial aqui: Este é apenas um exemplo. Pode acontecer que o conf contenha worker_processes 1; . Esta é uma parte difícil. Eu quero um comando sed que encontre a caixa de correspondência PRIMEIRO wHOLE da palavra worker_processes , exclua a linha de texto onde a palavra foi encontrada e cole worker_processes 4;
-a e salve o arquivo. Este é o método mais confiável para a edição de arquivos (sem risco de quebrar qualquer conf
Uma última sugestão: usei sed -i 's / enabled = 0 / enabled = 1 / g' /etc/yum.repos.d/remi.repo para alterar enabled = 0 to enabled = 1 na seção [remi] em remi .repo .No entanto, tenho a sensação de que ele pode modificar todos os habilitados = 0 nesse arquivo, o que provocará o servidor. Alguém pode sugerir um código melhor.
Outra coisa de que não tenho certeza: o PI deseja editar um arquivo com este como Text Testing = "0" (Sim, possui aspas e preciso mantê-lo). Ele deve ser modificado de Testing = "0" para Testing = " 1 "(entre aspas)
Também preciso adicionar algum texto com aspas no final de um arquivo com sed Como "Thanks Quanta" (com aspas) Para php você coloca um \ com aspas que ecoam, não sei como é feito para o bash
Outra coisa
eu preciso modificar uma linha em um conf, mas não me lembro qual é o texto inteiro a ser substituído
Como sua escuta = alguma coisa; , eu quero modificá-lo para ouvir = /tmp/php5-fpm.sock;
Grandes polegares para cima para cima quanta
Obrigado pela incrível equipe de suporte
-i
não é uma opção padrão parased
.ed
, no entanto, oferece uma maneira compatível com os padrões de editar arquivos com sintaxe muito semelhante à do sed.Como o ptman disse, o Augeas pode evitar que você use
sed
/awk
:definirá a prioridade do
epel
repositório como 10. Se apriority
chave já existir, ela definirá seu valor, caso contrário, adicionará umpriority
entrada após a última entrada na seção.O mesmo vale para outros valores que você pode querer modificar.
Se você deseja modificar vários valores, pode até usar
augtool
como intérprete:Se você deseja mantê-lo em seu script bash, pode canalizar os comandos para
augtool
:Vejo
man augtool
para mais opções.Existem várias vantagens de usar o Augeas vs
sed
/awk
:yum.repo
sintaxe). Você não correrá o risco de quebrar a sintaxe do arquivo se seu regex estiver errado;yum.repo
seções; portanto, você sabe que está editando a seção correta;fonte
Você também pode querer conferir o Augeas , ferramenta para modificar programaticamente os arquivos de configuração. É muito poderoso em combinação com o Puppet (um sistema de gerenciamento de configuração), mas também pode ser usado por si só.
fonte