shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Extrair comandos a partir de um arquivo


From: Michael Costa
Subject: Re: [shell-script] Extrair comandos a partir de um arquivo
Date: Sat, 18 Mar 2017 23:35:32 -0300

Vocês são demais, estava me matando aqui para criar aquele arquivo de origem e depois fiquei filtrando, mas me perdia na hora de separar os grupos.
Estou acompanhando a lógica de vocês e percebendo que eu ainda tenho muito para aprender!

Muito obrigado pela orientação! Vocês são demais!

Em 17 de março de 2017 18:36, 'Julio C. Neves' address@hidden [shell-script] <address@hidden> escreveu:
 

Fala Michael,

Comecei a fazer, mas tenho de sair. Pensei em fazer o seguinte:

sed -r 's/.*_gid=([0-9]+)\(([^)]+)\)_.*/groupadd -g \1 \2;/'  <<< 'maestro_932_gid=931(grpmstr)_groups=1(staff)_groups=1(staff)_/maestro_/bin/bash'

Onde eu iria separar o que interessa, montando grupos (usando parênteses) pelo sed e na saída geraria os diversos comandos usando esses valores capturados e executaria com um eval.

Desse jeito vc só teria um sed bem grande e depois fazer um eval para executar toda a linha gerada. Nesse sed aí de cima, só tive tempo de pegar o trecho necessario para montar o 1⁰ cmd na saída. Vê se vc consegue o resto.


Abcs,
Julio

Damos treinamento em sua empresa por 
um preço, 
no mínimo, 50% mais barato que qualquer curso,
com certificado e nota fiscal.

​​
Nosso time de instrutores in company é formado somente por
autores
​ ​
de Best Sellers
​ ​
​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico


Em 17 de março de 2017 10:12, Michael Costa address@hidden [shell-script] <address@hidden.br> escreveu:
 

Pessoal, bom dia!

Tenho um arquivo com o seguinte conteudo:

maestro_932_gid=931(grpmstr)_groups=1(staff)_groups=1(staff)_/maestro_/bin/bash
sapadm_32123_gid=204(sapsys)_groups=206(oper),208(sapinst)_groups=206(oper),208(sapinst)_/home/sapadm_/usr/bin/ksh
oracle_31201_gid=205(dba)_groups=206(oper),208(sapinst)_groups=206(oper),208(sapinst)_/oracle/SID_/bin/false
usuario_206_gid=204(sapsys)_groups=208(sapinst)_groups=208(sapinst)_/home/usuario_/bin/bash

O que estou tentando fazer, é usar este arquivo como origem e gerar os comandos de criação de usuário e grupo baseado nele.
Problemas que estou enfrentando:

O campo do ((HOME) é variável, as vezes está na sexta posição e em outras vezes varia.
Os grupos se repetem, preciso de uma forma de validar se o comando do grupo já foi processado e não repetir (pensei em jogar todos os comandos para um arquivo e depois dar um uniq nele)
Preciso validar se o grupo ou o usuário já existem no servidor.

A saida esperada, seria algo do tipo:

groupadd -g 931 grpmstr
groupadd -g 1 staff
useradd -g grpmstr -u 932 -G staff -m -s /bin/bash maestro

groupadd -g 204 sapsys
groupadd -g 206 oper
Grupo sapinst já existe no sistema com ID 208
useradd -g sapsys -u 32123 -G oper,sapinst -m -s /usr/bin/ksh

groupadd -g 205 dba
Grupo oper já existe no ambiente com ID 206
Usuario oracle já existe no ambiente. (saida do comando id oracle)

E por ai vai.

Entenderam ?

Agradeço!




reply via email to

[Prev in Thread] Current Thread [Next in Thread]