Eu tenho um arquivo que obtém detalhes do comando ldapsearch e cria o arquivo conforme abaixo
# lschuler, people, pl.s2-eu.XXXXXXXXX.local
dn: uid=lschuler,ou=people,dc=pl,dc=s2-eu,dc=XXXXXXXXX,dc=local
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
loginShell: /bin/bash
homeDirectory: /home/lschuler
gidNumber: 10000
uid: lschuler
cn: Leonie Schuessler
uidNumber: 20056
mail: [email protected]
sn: Schuessler
givenName: Leonie
# cadelie, people, pl.s2-eu.XXXXXXXXX.local
dn: uid=cadelie,ou=people,dc=pl,dc=s2-eu,dc=XXXXXXXXX,dc=local
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
loginShell: /bin/bash
homeDirectory: /home/cadelie
gidNumber: 10000
uid: cadelie
cn:: Q2hsb8OpIEFkw6lsaWU=
uidNumber: 20057
mail: [email protected]
sn:: QWTDqWxpZQ==
givenName:: Q2hsb8Op
se você vir sn:: & givenName:: algumas vezes tem valor base64, quero decodificá-lo com o comando que não consigo fazer
cat file.text | sed -e "s/.*sn:: //g;s/;.*//" |base64 -d && cat file.text | sed -e "s/.*givenName:: //g;s/;.*//" |base64 -d
como posso decodificar apenas sn:: & GivenName:: que tem valor base64 e salvar no mesmo arquivo novamente.
Por favor me ajude, SAMURAI
Usando perl e seu módulo MIME::Base64 , o seguinte liner base64 decodifica os dados de cada linha com um nome de campo terminando em dois pontos (::). Outras linhas são passadas inalteradas.
MIME::Base64
é um módulo principal do perl, incluído no perl desde a v5.8 (julho de 2002).Isso imprime em stdout.
-i
Para fazê-lo modificar o arquivo de entrada, você pode usar a opção de edição no local do perl .Usando qualquer awk:
Está girando um subshell para cada chamada
base64
para que essa parte seja lenta.