Aktuelle Java JRE 32 und 64 Bit exe Download Script
Guten Tag Experts,
probiere verzweifelt über Batch, Java Script, cURL und wget die aktuellste JRE.exe herunterzuladen!
Das Problem: es gibt eine BundleID zum Download der sich bei jeder Version wieder ändert, zusätzlich muss man mit wget z.b. auch noch "--no-cookies --no-check-certificate" als parameter mitgeben, damit er sie überhaupt runterläd.
Am liebsten hättte ich die beiden Downloads von der java Seite:
http://www.java.com/en/download/manual.jsp
Der windows x86 und x64 EXE Download.
Download Links wären:
http://javadl.sun.com/webapps/download/AutoDL?BundleId=81819
http://javadl.sun.com/webapps/download/AutoDL?BundleId=81821
da sieht man auchmal die nummern die sich immer ändern nach jeder Version und so macht es ja keinen sinn ein script in irgendeine Aufgabenplanung/Crontab zu schmeißen, sodass er nach einer prüfung der version, sich die neusten zwei herunterläd!
Könnte mir jemand ein paar Zeilen editieren, die einfach nur die AKTUELLSTEN beiden JRE.EXE DAteien runterläd ? Ich wäre zu absolutem DANK verpflichtet!!!!
mfg dave
probiere verzweifelt über Batch, Java Script, cURL und wget die aktuellste JRE.exe herunterzuladen!
Das Problem: es gibt eine BundleID zum Download der sich bei jeder Version wieder ändert, zusätzlich muss man mit wget z.b. auch noch "--no-cookies --no-check-certificate" als parameter mitgeben, damit er sie überhaupt runterläd.
Am liebsten hättte ich die beiden Downloads von der java Seite:
http://www.java.com/en/download/manual.jsp
Der windows x86 und x64 EXE Download.
Download Links wären:
http://javadl.sun.com/webapps/download/AutoDL?BundleId=81819
http://javadl.sun.com/webapps/download/AutoDL?BundleId=81821
da sieht man auchmal die nummern die sich immer ändern nach jeder Version und so macht es ja keinen sinn ein script in irgendeine Aufgabenplanung/Crontab zu schmeißen, sodass er nach einer prüfung der version, sich die neusten zwei herunterläd!
Könnte mir jemand ein paar Zeilen editieren, die einfach nur die AKTUELLSTEN beiden JRE.EXE DAteien runterläd ? Ich wäre zu absolutem DANK verpflichtet!!!!
mfg dave
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 222295
Url: https://administrator.de/contentid/222295
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
16 Kommentare
Neuester Kommentar
Hallo dave,
habe mir die Seite gerade mal angesehen und dir das folgende Bash-Script geschrieben. Es extrahiert die Links mit
Zu beachten gilt es natürlich, dass wenn sich die Seite grundlegend ändert, auch die Links sehr wahrscheinlich nicht mehr extrahiert werden können, aber das ist ein Grundsätzliches Problem beim Extrahieren von Content aus HTML-Seiten.
Grüße Uwe
habe mir die Seite gerade mal angesehen und dir das folgende Bash-Script geschrieben. Es extrahiert die Links mit
curl
aus der Seite und lädt sie mit wget
herunter und speichert die Files im selben Verzeichnis wie das Script. Der Trick um an den Link der 64-Bit Variante zu kommen besteht darin der Webseite von Oracle via USER_AGENT mitzuteilen das das Betriebssystem 64Bit fähig ist, ansonsten erscheint der Link für die 64-Bit Version nicht auf der Seite.#!/bin/bash
_SITE=$(curl -A 'WOW64' -s "http://www.java.com/de/download/manual.jsp")
_LINK32=$(echo "$_SITE" | grep -m 1 'Download der Java-Software für Windows Offline' | cut -d '"' -f4)
_LINK64=$(echo "$_SITE" | grep -m 1 'Download der Java-Software für Windows (64-Bit)' | cut -d '"' -f4)
#Check for valid Download URL
echo "$_LINK32" | grep -Eq '^http://.*BundleId=[0-9]+$'
if [ $? -eq 0 ] ;then
#Download 32-Bit Version
wget --no-cookies --no-check-certificate -O 'java32bit.exe' "$_LINK32"
else
echo 'Download-Link 32-Bit Version defekt.'
fi
#Check for valid Download URL
echo "$_LINK64" | grep -Eq '^http://.*BundleId=[0-9]+$'
if [ $? -eq 0 ] ;then
#Download 64-Bit Version
wget --no-cookies --no-check-certificate -O 'java64bit.exe' "$_LINK64"
else
echo 'Download-Link 64-Bit-Version defekt.'
fi
Grüße Uwe
Zitat von @onkeldave:
hi uwe sauberer arbeit, ist aber ein linux script und wir haben hier nur windows rechner, insofern schwerst für mich
einzupflegen ;) oder versteht die windows powershell sowas inzwischen ? mfg dave
wenn du hier mit Begriffen wie curl, wget, crontab hantierst was soll ich da denken ?hi uwe sauberer arbeit, ist aber ein linux script und wir haben hier nur windows rechner, insofern schwerst für mich
einzupflegen ;) oder versteht die windows powershell sowas inzwischen ? mfg dave
lässt sich aber genau so simpel auf VBS oder Powershell portieren.
Zitat von @onkeldave:
naja wie auch immer, ist jemand in der lage, mir das auf powershell zu konvertieren ?
melde mich später dazu nochmal naja wie auch immer, ist jemand in der lage, mir das auf powershell zu konvertieren ?
Wenns nur ein Server ist der das für Windows-Clients im Hintergrund erledigt ... kann das schon vorkommen.
(Script Stand: 19.11.2013 / muss angepasst werden wenn Qracle die Seite grundlegend umbaut)
Grüße Uwe
naja wie auch immer, ist jemand in der lage, mir das auf powershell zu konvertieren ? die vorarbeit von uwe ist ja
guckst du hier: (Pfade für die Files in Zeile 2 und 3 noch anpassen)(Script Stand: 19.11.2013 / muss angepasst werden wenn Qracle die Seite grundlegend umbaut)
#Download-Pfade für die Dateien
$targetPathJava32 = "C:\java32bit.exe"
$targetPathJava64 = "C:\java64bit.exe"
#Funktion zum einfacheren Extrahieren via Regular Expressions mit Group-Matching
Function Get-Matches($Pattern,$groupNumber = 0) {begin { $regex = New-Object Regex($pattern) };process { foreach ($match in ($regex.Matches($_))) { ([Object[]]$match.Groups)[$groupNumber].Value }}}
#Webseite mit WebClient passendem Encoding und 64-Bit User-Agent herunterladen
$net = New-Object System.Net.WebClient
$net.Encoding = [System.Text.Encoding]::UTF8
$net.Headers.Add("User-Agent","WOW64")
$net.Headers.Add("Accept-Language","de-de")
$content = $net.DownloadString("http://www.java.com/de/download/manual.jsp")
#Downloadlinks aus dem Quelltext extrahieren
$link32bit = $content | Get-Matches '<a title="Download der Java-Software für Windows Offline" href="([^>\"]+)">' 1 | select -First 1
$link64bit = $content | Get-Matches '<a title="Download der Java-Software für Windows \(64-Bit\)" href="([^>\"]+)">' 1 | select -First 1
#Dateien herunteladen wenn die Links erfolgreich extrahiert wurden
if ($link32bit -ne ""){$net.DownloadFile($link32bit,$targetPathJava32)}
if ($link64bit -ne ""){$net.DownloadFile($link64bit,$targetPathJava64)}
Ergänzung (Zusätzliche Variante ab Powershell 3.0):
$targetPathJava32 = "c:\java32bit.exe"
$targetPathJava64 = "c:\java64bit.exe"
Function Get-Matches($Pattern,$groupNumber = 0) {begin { $regex = New-Object Regex($pattern) };process { foreach ($match in ($regex.Matches($_))) { ([Object[]]$match.Groups)[$groupNumber].Value }}}
$content = (Invoke-WebRequest "http://www.java.com/de/download/manual.jsp" -UserAgent "WOW64" -Headers @{"Accept-Language"="de-de"}).Content
$link32bit = $content | Get-Matches '<a title="Download der Java-Software für Windows Offline" href="([^>\"]+)">' 1 | select -First 1
$link64bit = $content | Get-Matches '<a title="Download der Java-Software für Windows \(64-Bit\)" href="([^>\"]+)">' 1 | select -First 1
if ($link32bit -ne ""){invoke-webrequest $link32bit -OutFile $targetPathJava32}
if ($link64bit -ne ""){invoke-webrequest $link64bit -OutFile $targetPathJava64}
müsste mit dem Parameter
-P C:\Pfad
gehen, hatte damit aber in der Vergangenheit Probleme das an den Dateinamen dann ein haufen Schriott angehängt wurde. Dann müsste man den Schrott noch mit einem Rename in der Powershell abschneiden...$wgetPath = "C:\PathTo\\wget.exe"
$downloadPath = "C:\DownloadPfad"
Start-Process -FilePath $wgetPath -ArgumentList "-P $downloadPath",$link32bit -Wait
Start-Process -FilePath $wgetPath -ArgumentList "-P $downloadPath",$link32bit -Wait
dir "$downloadPath\jre-*@*" | %{Rename-Item -Path $_.FullName -NewName $_.Name.Split("@")}
Hallo dave,
sehr wahrscheinlich ist der jeweilige Link leer und deshalb kommt es zu der Fehlermeldung, d.h. der Fehler muss schon vorher beim extrahieren der Links via IE aufgetreten sein.
Den IE zu benutzen ist eigentlich nicht sehr zuverlässig, besonders wenn man den Code auf andere Systeme portiert, da muss dann immer erst getestet werden.
Wenn du schon Powershell 3.0 auf dem System hast kannst du die oben beschriebene Methode nutzen um die Dateien ohne Zusatztools nur mit der Pwershell runterzuladen:
Grüße Uwe
--edit-- habe die IE Version komplett (auch oben) rausgenommen und durch eine bessere die auch unter Powershell 2.0 funktioniert ersetzt.
sehr wahrscheinlich ist der jeweilige Link leer und deshalb kommt es zu der Fehlermeldung, d.h. der Fehler muss schon vorher beim extrahieren der Links via IE aufgetreten sein.
Den IE zu benutzen ist eigentlich nicht sehr zuverlässig, besonders wenn man den Code auf andere Systeme portiert, da muss dann immer erst getestet werden.
Wenn du schon Powershell 3.0 auf dem System hast kannst du die oben beschriebene Methode nutzen um die Dateien ohne Zusatztools nur mit der Pwershell runterzuladen:
$targetPathJava32 = "e:\java32bit.exe"
$targetPathJava64 = "e:\java64bit.exe"
Function Get-Matches($Pattern,$groupNumber = 0) {begin { $regex = New-Object Regex($pattern) };process { foreach ($match in ($regex.Matches($_))) { ([Object[]]$match.Groups)[$groupNumber].Value }}}
$content = (Invoke-WebRequest "http://www.java.com/de/download/manual.jsp" -UserAgent "WOW64" -Headers @{"Accept-Language"="de-de"}).Content
$link32bit = $content | Get-Matches '<a title="Download der Java-Software für Windows Offline" href="([^>\"]+)">' 1 | select -First 1
$link64bit = $content | Get-Matches '<a title="Download der Java-Software für Windows \(64-Bit\)" href="([^>\"]+)">' 1 | select -First 1
if ($link32bit -ne ""){invoke-webrequest $link32bit -OutFile $targetPathJava32}
if ($link64bit -ne ""){invoke-webrequest $link64bit -OutFile $targetPathJava64}
--edit-- habe die IE Version komplett (auch oben) rausgenommen und durch eine bessere die auch unter Powershell 2.0 funktioniert ersetzt.