script user em lote samba4 [RESOLVIDO]

1. script user em lote samba4 [RESOLVIDO]

Alexandre Freitas
ale_debian

(usa Debian)

Enviado em 04/11/2020 - 18:51h

Boa Tarde

Srs

Estou enfrentando uma dificuldade no pequeno script abaixo:
#!/bin/bash
gawk -F ";" '{ print $1, $2, $3, $4, $5 }' usersnew | while read LISTA;
do $(echo "/usr/bin/samba-tool user create $LISTA --must-change-at-next-login");
done;

arquivo
teste.user1;paS@2020;--given-name=teste user1 teste;--surname=Freitas;--userou=OU=TI,OU=2-COLIGADA2

Acontece que, se no atributo --given-name conter dados com espaço da error no momento do insert, mesmo o conteudo estando entre as " " duplas ou ' ' simples.
Se deixo este atributo sem espaço funciona normalmente.
Alguém teria um dica para esse problema.
Agradeço deste já pela atenção.




  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 05/11/2020 - 17:54h


ale_debian escreveu:

Bom dia

Marcelo Oliver

Primeiramente obrigado.
Porem nenhuma desta soluções me servem, posso esta fazendo algo de errado.
Efetuei um teste simples onde pego o 3 elemento. via console com o awk, é funciona normalmente.
/home/alexc/scripts# gawk -F";" '{print $3}' usersnew
--given-name=Alexandre Cruz
sucesso
-------------------------------------------
Porem via script, acho que o espaço esta de certa forma empaquetando
/home/alexc/scripts# ./create-new.sh
Usage: samba-tool user create <username> [<password>] [options]
falha
---------------------------------------------
Preciso descobrir com tratar esse espaço.
Novamente, Grato pela atenção.

Boa tarde ale_debian.
As sugestões da resposta anterior, foram no sentido de "como pegar os dados" do arquivo.....

A mensagem de erro, se refere a sintaxe do comando samba-tool:
Usage: samba-tool user create <username> [<password>] [options]
Não utilizo o SAMBA, portanto, desconheço a sintaxe do "samba-tool".
Veja no link:
https://lists.samba.org/archive/samba/2015-May/191542.html
A mensagem de: 2015-05-06 10:15 GMT+02:00 L.P.H. van Belle

______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________


3. Re: script user em lote samba4

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 04/11/2020 - 19:57h

ale_debian escreveu:

Boa Tarde

Srs

Estou enfrentando uma dificuldade no pequeno script abaixo:
#!/bin/bash
gawk -F ";" '{ print $1, $2, $3, $4, $5 }' usersnew | while read LISTA;
do $(echo "/usr/bin/samba-tool user create $LISTA --must-change-at-next-login");
done;

arquivo
teste.user1;paS@2020;--given-name=teste user1 teste;--surname=Freitas;--userou=OU=TI,OU=2-COLIGADA2

Acontece que, se no atributo --given-name conter dados com espaço da error no momento do insert, mesmo o conteudo estando entre as " " duplas ou ' ' simples.
Se deixo este atributo sem espaço funciona normalmente.
Alguém teria um dica para esse problema.
Agradeço deste já pela atenção.

Boa noite Ale, espaços sempre geram problemas.....
Tente escapar os "Espaços":
teste.user1;paS@2020;--given-name=teste\ user1\ teste;--surname=Freitas;--userou=OU=TI,OU=2-COLIGADA2 

Quanto ao seu script....
Já que esta usando o laço 'while', não é necessário usar o "gawk"....
Exemplo:
while IFS=';' read -a cp;do #Gera a matriz 'cp'
echo "All => ${cp[@]}"; #Mostra tudo
echo -e "CP0:${cp[0]}\nCP1:${cp[1]}\nCP2:${cp[2]}\nCP3:${cp[3]}\nCP4:${cp[4]}"; #Esta linha é só para te mostrar, cada elemento da matriz.
done<arq.txt

Ou Somente com o awk:
awk -F ";" '{gsub(";"," ");print "/usr/bin/samba-tool user create " $0 " --must-change-at-next-login"}' arq.txt|bash 

É possivel incluir o comando no 'awk:
Exemplo genérico:
awk '{system("date -d\"@"$0"\"")}' <<< "1600000000"
______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________



4. Re: script user em lote samba4 [RESOLVIDO]

Alexandre Freitas
ale_debian

(usa Debian)

Enviado em 05/11/2020 - 10:36h

Bom dia

Marcelo Oliver

Primeiramente obrigado.

Porem nenhuma desta soluções me servem, posso esta fazendo algo de errado.
Efetuei um teste simples onde pego o 3 elemento. via console com o awk, é funciona normalmente.
/home/alexc/scripts# gawk -F";" '{print $3}' usersnew
--given-name=Alexandre Cruz

sucesso
-------------------------------------------
Porem via script, acho que o espaço esta de certa forma empaquetando
/home/alexc/scripts# ./create-new.sh
Usage: samba-tool user create <username> [<password>] [options]

falha
---------------------------------------------
Preciso descobrir com tratar esse espaço.
Novamente, Grato pela atenção.


5. Re: script user em lote samba4 [RESOLVIDO]

Alexandre Freitas
ale_debian

(usa Debian)

Enviado em 05/11/2020 - 18:37h

Boa Tarde

Marcelo Oliver

Com o link abaixo
Veja no link:
https://lists.samba.org/archive/samba/2015-May/191542.html
A mensagem de: 2015-05-06 10:15 GMT+02:00 L.P.H. van Belle

Consegui resolver o problema, populei as variáveis primeiro, e depois apliquei no comando:

while read linea
do
UserN=$(echo ${linea}|cut -d ";" -f1)
UserP=$(echo ${linea}|cut -d ";" -f2)
UserNom=$(echo ${linea}|cut -d ";" -f3)
UserApp=$(echo ${linea}|cut -d ";" -f4)

samba-tool user create "${UserN}" "${UserP}" --given-name="${UserNom}" --surname="${UserApp}"

sleep 1
done < teste2

MUITO OBRIGADO PELA AJUDA.



6. Re: script user em lote samba4 [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 05/11/2020 - 18:57h

ale_debian escreveu:

Boa Tarde

Marcelo Oliver

Com o link abaixo
Veja no link:
https://lists.samba.org/archive/samba/2015-May/191542.html
A mensagem de: 2015-05-06 10:15 GMT+02:00 L.P.H. van Belle

Consegui resolver o problema, populei as variáveis primeiro, e depois apliquei no comando:

while read linea
do
UserN=$(echo ${linea}|cut -d ";" -f1)
UserP=$(echo ${linea}|cut -d ";" -f2)
UserNom=$(echo ${linea}|cut -d ";" -f3)
UserApp=$(echo ${linea}|cut -d ";" -f4)

samba-tool user create "${UserN}" "${UserP}" --given-name="${UserNom}" --surname="${UserApp}"

sleep 1
done < teste2

MUITO OBRIGADO PELA AJUDA.

Boa noite, ale_debian,
Por nada....
da para melhorar seu script:
while IFS=";" read -a campo;do #Gera a matriz/Array campo
samba-tool user create "${campo[0]}" "${campo[1]}" --given-name="${campo[2]}" --surname="${campo[3]}"
sleep 1
done < teste2

Somente com o awk:
 awk -F";" '{system("/usr/bin/samba-tool user create "$1" "$2" --given-name="$3" --surname="$4)}' texto 

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



7. Re: script user em lote samba4 [RESOLVIDO]

Alexandre Freitas
ale_debian

(usa Debian)

Enviado em 06/11/2020 - 12:28h

Bom dia

Oliver

Não sei explicar o porque, porem só funcionou conforme o link enviado.
As outras duas maneira já havia aplicado, porem sem sucesso.
O importante é que funcionou.
Valeu.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts