자동화된 VirtualBox 빌드를 위한 스크립트를 작성할 계획인데 VirtualBox의 각 버전에 버전(물론)과 릴리스 버전이 포함되어 있는 것을 확인했습니다.
이 예에서는
http://download.virtualbox.org/virtualbox/5.0.6/VirtualBox-5.0.6-103037-Linux_amd64.run
5.0.6은 버전이고 103037은 릴리스 버전이며 아마도 git 개정판일 것입니다.
물론 모든 새 버전에는 새 릴리스 버전이 있습니다. 릴리스 버전을 모르거나 컬 등을 사용하여 추출할 수 있습니까?
답변1
이는 매우 깨끗하지만 lynx
링크 덤프에 의존합니다(정규식 등을 사용하여 소스 HTML을 구문 분석하는 대신).
wget -q "https://www.virtualbox.org/wiki/Linux_Downloads" -O - | lynx -stdin -dump -listonly | grep -Eo 'http.+amd64.run$'
마지막 grep
정규식에서는 amd64 버전을 원한다고 가정합니다.
똑같은 것 curl
:
curl -s "https://www.virtualbox.org/wiki/Linux_Downloads" | lynx -stdin -dump -listonly | grep -Eo 'http.+amd64.run$'
wget
업데이트: 전화를 걸 거나 필요하지 않다는 것이 올바르게 지적되었습니다 .curl
lynx -dump -listonly "https://www.virtualbox.org/wiki/Linux_Downloads" | grep -Eo 'http.+amd64.run$'
답변2
wget만 사용하면 릴리스 버전이 필요하지 않고 버전만 사용하면 됩니다.
wget -e robots=off -nd -r --no-parent -A 'VirtualBox-5.0.6-*-Linux_amd64.run' http://download.virtualbox.org/virtualbox/5.0.6/
wget은 허용 패턴의 일부로 재귀 모드에서 전역 일치를 지원하므로 다음과 같습니다.
-r
: 재귀적 다운로드
--no-parent
: 재귀하지 않음 ..
-A 'VirtualBox-5.0.6-*-Linux_amd64.run'
: glob의 승인 모드 사용
-e robots=off
: robots.txt를 다운로드하지 않음
-nd
: 로컬에서 하위 디렉터리를 생성하지 않음
물론 버전 환경 변수를 사용할 수 있습니다.
VER=5.0.6
wget -e robots=off -nd -r --no-parent -A "VirtualBox-${VER}-*-Linux_amd64.run" http://download.virtualbox.org/virtualbox/${VER}/
VER는 실제로 다음에서 얻을 수 있습니다.http://download.virtualbox.org/virtualbox/LATEST.TXT그래서 이것은 다음과 같습니다:
VER=$(wget -O - http://download.virtualbox.org/virtualbox/LATEST.TXT)
wget -e robots=off -nd -r --no-parent -A "VirtualBox-${VER}-*-Linux_amd64.run" http://download.virtualbox.org/virtualbox/${VER}/
아니면 컬(curl)이나 링스(lynx)를 사용하여 버전 정보를 추출하세요...
cron 스크립트에서 사용하는 경우 daily ver을 로컬 버전 env var(wget에서 NEWVER)와 동일시하고 NEWVER가 현재 VER와 다른 경우에만 다운로드할 수 있습니다.