La commande OpenSSL fera la variable NotBeforeDate
d'avoir la valeur (au moins dans la version bash j'utilise):
notBefore=Oct 31 00:00:00 2013 GMT
Donc, nous devons d'abord enlever la partie notBefore=
:
dateStr=${NotBeforeDate/notBefore=/}
Ensuite, vous pouvez utiliser la commande date
:
date --date="$dateStr" --utc +"%m-%d-%Y"
L'option --date
indique à la commande d'utiliser la valeur dateStr
, --utc
indique que la date est en UTC (comme spécifié par GMT
partie) et +"%m-%d-%Y"
met en forme la date au format souhaité.
La sortie est:
10-31-2013
PS: les options peuvent varier en fonction de votre version de Linux.
Vous pouvez vérifier tous les disponibles avec date --help
ou man date
.
Par exemple, les options longues --date
et --utc
pourraient ne pas être disponibles, mais les versions courtes pourraient être équivalentes (juste un exemple, je ne sais pas si date
commande a de telles variations entre les différentes versions unix):
date -d "$dateStr" -u +"%m-%d-%Y"
Malheureusement, je n'ai pas exactement le même environnement que vous utilisez (ksh dans unix), mais cela devrait fonctionner.
Les options -d
semble être GNU spécifique, donc si ce n'est pas disponible, vous devrez analyser manuellement la chaîne.En supposant que dateStr
a la valeur Oct 31 00:00:00 2013 GMT
, vous pouvez exécuter:
printf '%s\n' "$dateStr" | awk '{ printf "%02d-%02d-%04d\n", (index("JanFebMarAprMayJunJulAugSepOctNovDec",$1)+2)/3, $2, $4}'
La sortie est:
10-31-2013
Pouvez-vous élaborer un peu plus ... est que date provenant d'un fichier 'log' ou quelque chose? – Hackerman
@Hackerman Je reçois cette date du certificat SSL et est enregistrée dans une variable, je me demandais simplement si elle pourrait être convertie en date courte. –
'enregistré dans une variable', comment? – Hackerman