컬이나 다른 것을 사용하여 정보 추출

컬이나 다른 것을 사용하여 정보 추출

자동화된 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와 다른 경우에만 다운로드할 수 있습니다.

관련 정보