-
-
Save n0ts/40dd9bd45578556f93e7 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# You must accept the Oracle JDK License Update | |
# https://www.oracle.com/java/technologies/javase-downloads.html | |
# usage: get_oracle_jdk_x64.sh <jdk_version> <platform> <ext> | |
# jdk_version: 14 | |
# platform: linux or osx or windows | |
# ext: rpm or dmg or tar.gz or exec | |
jdk_version=${1:-14} | |
platform=${2:-linux} | |
ext=${3:-rpm} | |
readonly url="https://www.oracle.com" | |
readonly jdk_download_url1="$url/java/technologies/javase-downloads.html" | |
readonly jdk_download_url2=$( | |
curl -s $jdk_download_url1 | \ | |
egrep -o "/\java\/technologies\/javase-jdk${jdk_version}-downloads.html" | |
) | |
[[ -z "$jdk_download_url2" ]] && echo "Could not get jdk download url - $jdk_download_url1" >> /dev/stderr | |
readonly jdk_download_url3="${url}${jdk_download_url2}" | |
readonly jdk_download_url4=$( | |
curl -s $jdk_download_url3 | \ | |
egrep -o "download.oracle\.com\/otn-pub\/java\/jdk\/(${jdk_version})\..*\/.*\/jdk-${jdk_version}\..*[_]${platform}-x64_bin.${ext}\'" | tr -d \' | |
) | |
for dl_url in ${jdk_download_url4[@]}; do | |
wget --no-cookies \ | |
--no-check-certificate \ | |
--header "Cookie: oraclelicense=accept-securebackup-cookie" \ | |
-N $dl_url | |
done |
Triplle thanks dear sir, Works like a charm
Hello, I support JDK new version 9!!!
This really saved my life. Thanks!
I used this as well, really nice and easy script.
oracle now changed this to use versioning in the name so this stopped working - i've fixed it by changing the regex
- egrep -o "http\:\/\/download.oracle\.com\/otn-pub\/java\/jdk\/[8-9](u[0-9]+|\+).*\/jdk-${jdk_version}.*(-|_)linux-(x64|x64_bin).$ext"
+ egrep -o "http\:\/\/download.oracle\.com\/otn-pub\/java\/jdk\/[8-9](u[0-9]+|\+|[.0-9]+\+).*\/jdk-${jdk_version}.*(-|_)linux-(x64|x64_bin).$ext"
Or specifically,
from:
(u[0-9]+|\+)
to:
(u[0-9]+|\+|[.0-9]+\+)
working on Ubuntu 16.04 with andrewkro fix
working on Ubuntu 16.04 with andrewkro fix
do you have a similar script for jre?
Note the regex doesn't work for 10 - it's hard coded for java versions starting with 8 or 9. I rewrote it to cover 10 also:
http\:\/\/download.oracle\.com\/otn-pub\/java\/jdk\/([1-9][\.u0-9]*)(\+|\-)[b0-9]*\/[a-f0-9]+\/jdk-\1(-|_)linux-(x64|x64_bin).$ext
I also added | sort -r | head -n 1
to the end of the url4 command to ensure that it grabs the latest version if there are multiple in the page.
Since the most part of that script is done via curl, why not change the last wget to also curl:
curl -C - -LR#OH "Cookie: oraclelicense=accept-securebackup-cookie" -k $dl_url
+1 on only using curl, note the above curl does not work
Tried your fix for new versions, does not seem to work. Is it still working for you?
Thanks @liedekef it works
The script stopped working for me today. It appears the Oracle is now responding to these calls with a 301 response. Adding the -L flag to curl on lines 15 and 24 solved the issue for me.
The script stopped working for me today. It appears the Oracle is now responding to these calls with a 301 response. Adding the -L flag to curl on lines 15 and 24 solved the issue for me.
Confirmed. Thanks @jonathan-russo
I am getting "302 Moved Temporarily" and then "401 Authorization Required".
So this script has broken again on me. I have now decided to simply download the tar.gz files and put them on a local server for consistent access. Thanks for the original script @n0ts
Seems to need https.
JDK_DOWNLOAD_URL4
need https and change otn-pub to otn:
readonly jdk_download_url4=$(
curl -s $jdk_download_url3 | \
egrep -o "https\:\/\/download.oracle\.com\/otn\/java\/jdk\/[8-9](u[0-9]+|\+).*\/jdk-${jdk_version}.*(-|_)linux-(x64|x64_bin).$ext"
)
And now NEED oracle account login/passwd.
i soon i run the script I get this error "Could not get jdk download url - https://www.oracle.com/technetwork/java/javase/downloads/index.html"
i soon i run the script I get this error "Could not get jdk download url - https://www.oracle.com/technetwork/java/javase/downloads/index.html"
Hi, I updated get_oracle_jdk_x64.sh .
For Linux
./get_oracle_jdk_x64.sh 14 linux rpm
For macOS
./get_oracle_jdk_x64.sh 14 osx dmg
For Windows
./get_oracle_jdk_x64.sh 14 windows exe
Thanks a lot :)