Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Aktuelle Java JRE 32 und 64 Bit exe Download Script

Frage Entwicklung Java

Mitglied: onkeldave

onkeldave (Level 1) - Jetzt verbinden

18.11.2013 um 17:35 Uhr, 3314 Aufrufe, 16 Kommentare, 2 Danke

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!!!!

Mit freundlichen Grüßen dave
Mitglied: colinardo
18.11.2013, aktualisiert um 21:55 Uhr
Hallo dave,
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.
01.
#!/bin/bash 
02.
_SITE=$(curl -A 'WOW64' -s "http://www.java.com/de/download/manual.jsp") 
03.
_LINK32=$(echo "$_SITE" | grep -m 1 'Download der Java-Software für Windows Offline' | cut -d '"' -f4) 
04.
_LINK64=$(echo "$_SITE" | grep -m 1 'Download der Java-Software für Windows (64-Bit)' | cut -d '"' -f4) 
05.
 
06.
#Check for valid Download URL 
07.
echo "$_LINK32" | grep -Eq '^http://.*BundleId=[0-9]+$' 
08.
if [ $? -eq 0 ] ;then 
09.
	#Download 32-Bit Version 
10.
	wget --no-cookies --no-check-certificate -O 'java32bit.exe' "$_LINK32"	 
11.
else 
12.
	echo 'Download-Link 32-Bit Version defekt.' 
13.
fi 
14.
#Check for valid Download URL 
15.
echo "$_LINK64" | grep -Eq '^http://.*BundleId=[0-9]+$' 
16.
if [ $? -eq 0 ] ;then 
17.
	#Download 64-Bit Version 
18.
	wget --no-cookies --no-check-certificate -O 'java64bit.exe' "$_LINK64"	 
19.
else 
20.
	echo 'Download-Link 64-Bit-Version defekt.' 
21.
fi
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
Bitte warten ..
Mitglied: onkeldave
19.11.2013, aktualisiert um 09:31 Uhr
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 ? Mit freundlichen Grüßen dave
Bitte warten ..
Mitglied: colinardo
19.11.2013, aktualisiert um 09:34 Uhr
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 ? Mit freundlichen Grüßen dave
wenn du hier mit Begriffen wie curl, wget, crontab hantierst was soll ich da denken ?
lässt sich aber genau so simpel auf VBS oder Powershell portieren.
Bitte warten ..
Mitglied: onkeldave
19.11.2013, aktualisiert um 09:39 Uhr
warum sollte ich unter linux eine windows EXE datei herunterladen (cURL und wget gibt es auch für windows und crontab hab ich nur erwähnt weil aufgabenplanung unter windows kennt doch niemand)

naja wie auch immer, ist jemand in der lage, mir das auf powershell zu konvertieren ? die vorarbeit von uwe ist ja schonmal der hit! danke aufjedenfalll dafür - gute arbeit!

fetten gruß dave
Bitte warten ..
Mitglied: colinardo
19.11.2013 um 09:40 Uhr
Zitat von onkeldave:
naja wie auch immer, ist jemand in der lage, mir das auf powershell zu konvertieren ?
melde mich später dazu nochmal
Bitte warten ..
Mitglied: colinardo
19.11.2013, aktualisiert 20.11.2013
Zitat von onkeldave:
warum sollte ich unter linux eine windows EXE datei herunterladen
Wenns nur ein Server ist der das für Windows-Clients im Hintergrund erledigt ... kann das schon vorkommen.
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)
01.
#Download-Pfade für die Dateien 
02.
$targetPathJava32 = "C:\java32bit.exe" 
03.
$targetPathJava64 = "C:\java64bit.exe" 
04.
 
05.
#Funktion zum einfacheren Extrahieren via Regular Expressions mit Group-Matching 
06.
Function Get-Matches($Pattern,$groupNumber = 0) {begin { $regex = New-Object Regex($pattern) };process { foreach ($match in ($regex.Matches($_))) { ([Object[]]$match.Groups)[$groupNumber].Value }}} 
07.
 
08.
#Webseite mit WebClient passendem Encoding und 64-Bit User-Agent herunterladen 
09.
$net = New-Object System.Net.WebClient 
10.
$net.Encoding = [System.Text.Encoding]::UTF8 
11.
$net.Headers.Add("User-Agent","WOW64") 
12.
$net.Headers.Add("Accept-Language","de-de") 
13.
$content = $net.DownloadString("http://www.java.com/de/download/manual.jsp") 
14.
 
15.
#Downloadlinks aus dem Quelltext extrahieren 
16.
$link32bit = $content | Get-Matches '<a title="Download der Java-Software für Windows Offline" href="([^>\"]+)">' 1 | select -First 1 
17.
$link64bit = $content | Get-Matches '<a title="Download der Java-Software für Windows \(64-Bit\)" href="([^>\"]+)">' 1 | select -First 1 
18.
 
19.
#Dateien herunteladen wenn die Links erfolgreich extrahiert wurden 
20.
if ($link32bit -ne ""){$net.DownloadFile($link32bit,$targetPathJava32)} 
21.
if ($link64bit -ne ""){$net.DownloadFile($link64bit,$targetPathJava64)}
Ergänzung (Zusätzliche Variante ab Powershell 3.0):
01.
$targetPathJava32 = "c:\java32bit.exe" 
02.
$targetPathJava64 = "c:\java64bit.exe" 
03.
Function Get-Matches($Pattern,$groupNumber = 0) {begin { $regex = New-Object Regex($pattern) };process { foreach ($match in ($regex.Matches($_))) { ([Object[]]$match.Groups)[$groupNumber].Value }}} 
04.
$content = (Invoke-WebRequest "http://www.java.com/de/download/manual.jsp" -UserAgent "WOW64" -Headers @{"Accept-Language"="de-de"}).Content 
05.
$link32bit = $content | Get-Matches '<a title="Download der Java-Software für Windows Offline" href="([^>\"]+)">' 1 | select -First 1 
06.
$link64bit = $content | Get-Matches '<a title="Download der Java-Software für Windows \(64-Bit\)" href="([^>\"]+)">' 1 | select -First 1 
07.
if ($link32bit -ne ""){invoke-webrequest $link32bit -OutFile $targetPathJava32} 
08.
if ($link64bit -ne ""){invoke-webrequest $link64bit -OutFile $targetPathJava64}
Grüße Uwe
Bitte warten ..
Mitglied: onkeldave
19.11.2013 um 11:25 Uhr
cool du bist ja schnell uwe. danke dafür!

also ich habe den pfad zu wget editiert und gesehen das der ausgabe pfad mein c laufwerk ist - ist top!
es läuft auch fehlerfrei durch, nur downloaded er gar nichts leider.
internet explorer ist v. 11.09
java.com wird auf deutsch angezeigt
system 64bit

script in powershell ausgeführt - mach ich irgendwas falsch ?
Bitte warten ..
Mitglied: onkeldave
19.11.2013, aktualisiert um 11:36 Uhr
danke funktioniert! best man of the day uwe! thank you very much!!! closed
Bitte warten ..
Mitglied: colinardo
19.11.2013 um 11:36 Uhr
Hier läufts einwandfrei ...starte das Script mal in einer Powershell mit Admin-Rechten, normalerweise kann man ins Root-Verzeichnis von C:\ nur mit Admin-Rechten schreiben, oder wähle ein anderes Ausgabeverzeichnis in dem du Schreibrechte hast.
Bitte warten ..
Mitglied: onkeldave
19.11.2013 um 11:39 Uhr
eine mini frage hätte ich noch - kann man den output von wget ohne dateinamen angeben? also das die datei so heißt wie sie vom server kommt und nicht unbenannt wird ?
Bitte warten ..
Mitglied: colinardo
19.11.2013, aktualisiert um 12:32 Uhr
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...
01.
$wgetPath = "C:\PathTo\\wget.exe" 
02.
$downloadPath = "C:\DownloadPfad" 
03.
Start-Process -FilePath $wgetPath -ArgumentList "-P $downloadPath",$link32bit -Wait 
04.
Start-Process -FilePath $wgetPath -ArgumentList "-P $downloadPath",$link32bit -Wait 
05.
dir "$downloadPath\jre-*@*" | %{Rename-Item -Path $_.FullName -NewName $_.Name.Split("@")[0]}
Bitte warten ..
Mitglied: onkeldave
20.11.2013, aktualisiert um 12:08 Uhr
hi männers, hoffe mir kann nochmal jemand schnell helfen.

also der code lässt sich problemlos auf einem windows 8.1 rechner mit:
ie 11.0
wget neuste version
powershell 4.0

ausführen

aber auf einem windows 2008 r2 mit:
ie 10
wget neuste version
powershell 2.0

meckert er:

>Start-Process : Das Argument für den Parameter "ArgumentList" kann nicht überpr
>üft werden. Das Argument ist NULL oder leer, oder ein Element der Argumentaufli
>stung enthält einen NULL-Wert. Geben Sie eine Auflistung an, die keine NULL-Wer
>te enthält, und führen Sie dann den Befehl erneut aus.
>Bei C:\scripts\test.ps1:13 Zeichen:48
>+ Start-Process -FilePath $wgetPath -ArgumentList <<<< "--output-document=C:\S
>cripts\java32bit.exe",$link32bit -Wait
+ CategoryInfo : InvalidData: ( [Start-Process], ParameterBindi
ngValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.Power
Shell.Commands.StartProcessCommand

>Start-Process : Das Argument für den Parameter "ArgumentList" kann nicht überpr
>üft werden. Das Argument ist NULL oder leer, oder ein Element der Argumentaufli
>stung enthält einen NULL-Wert. Geben Sie eine Auflistung an, die keine NULL-Wer
>te enthält, und führen Sie dann den Befehl erneut aus.
>Bei C:\scripts\test.ps1:14 Zeichen:48
>+ Start-Process -FilePath $wgetPath -ArgumentList <<<< "--output-document=C:\S
>cripts\java64bit.exe",$link64bit -Wait
+ CategoryInfo : InvalidData: ( [Start-Process], ParameterBindi
ngValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.Power
Shell.Commands.StartProcessCommand


hab schon recht viel ausprobiert, deshalb lande ich wieder bei euch, mit bitte um hilfestellung
probiert gänsefüßchen anders zu setzen, parameter -O auszuschreiben (--output-document="DATEI")
nix klappt leider
mach gerade mal ein update auf powershell 3.0


weis jemand rat?
Bitte warten ..
Mitglied: onkeldave
20.11.2013 um 12:15 Uhr
powershell 3.0 bringt auch keinen erfolg
Bitte warten ..
Mitglied: colinardo
20.11.2013, aktualisiert um 13:18 Uhr
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:
01.
$targetPathJava32 = "e:\java32bit.exe" 
02.
$targetPathJava64 = "e:\java64bit.exe" 
03.
Function Get-Matches($Pattern,$groupNumber = 0) {begin { $regex = New-Object Regex($pattern) };process { foreach ($match in ($regex.Matches($_))) { ([Object[]]$match.Groups)[$groupNumber].Value }}} 
04.
$content = (Invoke-WebRequest "http://www.java.com/de/download/manual.jsp" -UserAgent "WOW64" -Headers @{"Accept-Language"="de-de"}).Content 
05.
$link32bit = $content | Get-Matches '<a title="Download der Java-Software für Windows Offline" href="([^>\"]+)">' 1 | select -First 1 
06.
$link64bit = $content | Get-Matches '<a title="Download der Java-Software für Windows \(64-Bit\)" href="([^>\"]+)">' 1 | select -First 1 
07.
if ($link32bit -ne ""){invoke-webrequest $link32bit -OutFile $targetPathJava32} 
08.
if ($link64bit -ne ""){invoke-webrequest $link64bit -OutFile $targetPathJava64}
Grüße Uwe

--edit-- habe die IE Version komplett (auch oben) rausgenommen und durch eine bessere die auch unter Powershell 2.0 funktioniert ersetzt.
Bitte warten ..
Mitglied: onkeldave
20.11.2013 um 12:35 Uhr
wer ist mein held? ja richtig, uwe ist mein held! danke vielmals dafür! geht! schönen tag noch allerseits
Bitte warten ..
Mitglied: colinardo
20.11.2013, aktualisiert um 13:21 Uhr
nur zur Info: habe die Scripte noch ein klein wenig korrigiert, so dass auch wirklich nur die deutsche Seite abgerufen wird (Accept-Language Header)
Die IE Variante habe ich ganz gestrichen und durch eine Version die auch unter PS 2.0 funktioniert ersetzt (s. weiter oben)
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
32 Bit CAD Programm und Excel 64 Bit geht nicht (5)

Frage von GrueneSosseMitSpeck zum Thema Microsoft Office ...

Windows 10
gelöst MacBook Air Intel HD 3000 und Windows 10 64 bit? (8)

Frage von NeXiaL-Computers zum Thema Windows 10 ...

Windows 10
gelöst Windows 10 Pro 64 Bit "Schnellstart aktivieren" abschalten per GPO (6)

Frage von maxpoint zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...