2016-11-25 3 views
0

Я пытаюсь получить последнюю версию openssl в 1.0.2 series в bash.Essentially я хочу получить ссылку на скачивание последней версии завитка и последней версии в bash. Проблема в том, что openssl не использует тег latest в своих версиях github.Получение последней версии openssl в bash

+1

Это не похоже на программирует вопрос, а скорее о том, как установить программные обеспечения на дистрибутиве – Aserre

+0

@Aserre я знаю, как установить программное обеспечение родственного .... но жесткое кодирование значения версии в коде неэффективно так как я должен изменять его каждый раз, когда выходит новая версия. – user2650277

+0

Не последняя версия всегда на ветке 'master'? вы можете проанализировать вывод 'git remote -v update', чтобы убедиться, что вы обновлены – Aserre

ответ

1

Чтобы получить последний архив OpenSSL вы можете использовать один из зеркал OpenSSL FTP. Вот пример скрипта bash.

#!/bin/bash 

# An ftp mirror, see here https://www.openssl.org/source/mirror.html 
mirror_url='ftp://gd.tuwien.ac.at/infosys/security/openssl/' 

# Last modified date of source directory 
last_modified=$(curl -s $mirror_url | awk '/source/{print $6,$7,$8}') 

# OpenSSL archive with same modification Date as source dir 
latest_archive=$(curl -s "$mirror_url"source/ | grep "$last_modified.*tar.gz$"|awk '{print $NF}') 

# URL of latest release 
latest_release=$mirror_url"source/"$latest_archive 

# Download latest release 
curl -sO "$latest_release" 
+0

извините за поздний ответ. Ваше решение работает нормально, но мне интересно, что иногда он может возвращать версию fips opensl, если она была выпущена ранее. Можете ли вы изменить свой код, чтобы исключить версию fps opensl, чтобы быть в безопасности. – user2650277

+0

Вы можете отфильтровать строку fips, уточнив grep, попробуйте что-нибудь следующим образом: 'grep '$ last_modified. * openssl- [0-9]. * tar.gz $" ' – Zlemini

0

Я пытаюсь получить последнюю версию OpenSSL в 1.0.2 серии в баш ...

Насколько я знаю, Bash не использует OpenSSL. Он также не имеет встроенного инструмента загрузки или менеджера, поэтому вам нужно будет использовать внешнюю команду, например curl или wget.

Для осуществления загрузки вам необходимо посетить страницу OpenSSL download. Тогда его просто:

$ wget https://www.openssl.org/source/openssl-1.0.2j.tar.gz 
--2016-11-25 10:00:22-- https://www.openssl.org/source/openssl-1.0.2j.tar.gz 
Resolving www.openssl.org (www.openssl.org)... 23.6.16.135, ... 
Connecting to www.openssl.org (www.openssl.org)|23.6.16.135|:443... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 5307912 (5.1M) [application/x-gzip] 
Saving to: ‘openssl-1.0.2j.tar.gz’ 

openssl-1.0.2j.tar. 100%[===================>] 5.06M 6.67MB/s in 0.8s  

2016-11-25 10:00:23 (6.67 MB/s) - ‘openssl-1.0.2j.tar.gz’ saved [5307912/5307912] 

$ tar xzf openssl-1.0.2j.tar.gz 
$ 

Вы можете сценарий его с чем-то вроде:

#!/usr/bin/env bash 

VERSIONS=(z y x w v u t s r q p o n m l k j i h g f e d c b a) 
for v in ${VERSIONS[@]}; 
do 
    if [[ $(wget -S --spider https://www.openssl.org/source/openssl-1.0.2$v.tar.gz 2>&1 | grep 'HTTP/1.1 200 OK') ]]; 
    then 
     if [[ ! $(wget https://www.openssl.org/source/openssl-1.0.2$v.tar.gz &>/dev/null) ]]; 
     then 
      echo "Downloaded openssl-1.0.2$v.tar.gz" 
     else 
      echo "Failed to download openssl-1.0.2$v.tar.gz" 
     fi 

     break 
    fi 
done 
+0

Меня интересует только последняя версия здесь. Будет ли извлечение URL из https://www.openssl.org/source/ лучшим решением – user2650277

Смежные вопросы