Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix > Solaris
Solaris Forum d'entraide sur le système Solaris.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 04/11/2009, 14h23   #1
Invité régulier
 
Inscription : décembre 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 25
Points : 8
Points : 8
Par défaut copier une partie de fichier vers un autre

Salut,

J'ai un fichier de format der que je converti avec openssl en format pem pour que je puisse le lire avec un éditeur de texte.

Le fichier après conversion se compose comme suit:

-----BEGIN CERTIFICATE-----
MIIFrjCCBJagAwIBAgIDASa3MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkxV
MRYwFAYDVQQKEw1MdXhUcnVzdCBTLkEuMR4wHAYDVQQDExVMdXhUcnVzdCBRdWFs
aWZpZWQgQ0EwHhcNMDkwOTI0MDczMDQ2WhcNMTIwOTI0MDczMDQ2WjCBsjELMAkG
A1UEBhMCTFUxEzARBgNVBAgTCkxVWEVNQk9VUkcxEzARBgNVBAcTCkxVWEVNQk9V
UkcxFjAUBgNVBAoTDVBULUNPTlNVTFRJTkcxDjAMBgNVBAsTBUVDSVRZMRYwFAYD
VQQDEw1SQVBJTiBMYXVyZW50MRIwEAYDVQQFEwk5OTk5MDE2NDcxJTAjBgkqhkiG
9w0BCQEWFmVjaXR5QHB0LWNvbnN1bHRpbmcubHUwggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQCohc4AEv7uC8.....
-----END CERTIFICATE-----

Je veux faire un script qui permet de récupérer ce qu'il y a entre -----BEGIN CERTIFICATE----- et -----END CERTIFICATE----- et le stocke dans un autre fichier.
Voici mon script:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/ksh
echo "entrer le nom du der a convertir en pem \n";
read der_file;
#convertir le der en pem et stocker dans le fichier test_der.der
`openssl x509 -inform der -in $der_file -outform pem -out "test_der.der"`;
#recupere le "Base name" dans le format RFC2253 et stocke dans $tmp
tmp=`openssl x509 -in "test_der.der" -noout -subject -nameopt RFC2253`;
echo "tmp= $tmp";
echo $tmp|while read lg
        do
        #recuperer l'identifiant sofie du certificat    
        id=`echo $lg|cut -d"=" -f 4|cut -d"," -f 1`;
                echo "id= $id";
                #mv "test_der.der test_der.`$id `.pem";
        done
#rm -f "test_der.der";
#construire le ldif
debut="-----BEGIN CERTIFICATE-----";
#echo "debut du certificat :$debut";
fin="-----END CERTIFICATE-----";
#echo "fin du certificat :$fin";
cat "test_der.der"|while read ln
        do

                if [ [$ln == $debut] ]
                then
                        echo $debut
                else
                        if [ $ln == $fin ]
                        then
                                echo $fin
                        else
                                echo $ln >> "certificat.txt";
                        fi
                fi
        done


exit 0;
Lorsque je l'execute j'ai l'erreur suivante:

./convertToPem.ksh[27]: [: CERTIFICATE-----: unknown operator
./convertToPem.ksh[31]: [: CERTIFICATE-----: unknown operator

Quelqu'un peut-il me dire ce que je fais de faux ?

Merci
Dx_ter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2009, 22h48   #2
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 912
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 912
Points : 1 263
Points : 1 263
Il est possible de corriger ton script mais bien plus simple d'utiliser sed qui est mieux adapté.

Remplacer le "cat test_der.der | while read ..." par
Code :
sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' test_der.der > certificat.txt
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2009, 11h06   #3
Invité régulier
 
Inscription : décembre 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 25
Points : 8
Points : 8
Salut,

Cela ne marche pas, le fichier contient toujours le --BEGIN ....

Dx_ter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2009, 12h46   #4
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 912
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 912
Points : 1 263
Points : 1 263
Normalement, le BEGIN et END CERTIFICATE fait partie du certificat. Quel soft utilises-tu qui a un problème avec ces deux lignes ?

Sinon, il suffit de les enlever comme ça:
Code :
1
2
sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' test_der.der | grep -v CERTIFICATE > certificat.txt
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2009, 13h04   #5
Invité régulier
 
Inscription : décembre 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 25
Points : 8
Points : 8
J'ai trouvé la solution,

J'ai mis 2 sed sans le -n comme suit:

sed '/-----BEGIN CERTIFICATE-----/d' "test_der.${id}.pem" >certificat.txt;
sed '/-----END CERTIFICATE-----/d' "certificat.txt" > ldif_add_${id}.ldif;

Merci pour ton aide.
Dx_ter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2009, 15h28   #6
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 912
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 912
Points : 1 263
Points : 1 263
Hmm, tu veux dire qu'il n'y avait rien d'autre dans ton fichier avant BEGIN CERTIFICATE et après END CERTIFICATE ?? Si oui, une réponse encore plus simple est:
Code :
1
2
grep -v CERTIFICATE test_der.der > certificat.txt
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2009, 10h03   #7
Invité régulier
 
Inscription : décembre 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 25
Points : 8
Points : 8
Beh non il n'y a rien avant et rien après.
Dx_ter est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 23h40.


 
 
 
 
Partenaires

Hébergement Web