Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/08/2015, à 17:50

Compte anonymisé

[Résolu] Connaitre le nom du fichier auquel pointe l'url

Bonjour,

J'essaie de faire installateur en script bash pour installer java (java en *.tar.gz)

j'ai réussi à isoler le lien qui me permet de le télécharger

~$ wget -O- https://www.java.com/fr/download/linux_manual.jsp 2>&1 | grep -o -m 1 "<a title=\"Télécharger le logiciel Java pour Linux x64\".*" | awk '{print $9; end}' | sed 's/\"/ /g' | awk '{print $2; end}'
http://javadl.sun.com/webapps/download/AutoDL?BundleId=108139

Par contre, je n'ai pas le nom de la version ici jre-8u51-linux-x64.tar.gz (car je l'ai mit sur la barre d'adresse)

Comment faire pour retrouver ce nom de fichier  ?

Merci à vous

Dernière modification par NéoUbuntonien (Le 11/08/2015, à 16:02)

#2 Le 10/08/2015, à 18:38

inbox

Re : [Résolu] Connaitre le nom du fichier auquel pointe l'url

Salut,

Pour info, il existe un PPA pour installer le Java 8 d'Oracle.

Si le but est de pratiquer l'exercice de scripter, ne tiens pas compte de ma remarque.

A+


Un problème résolu ? Indiquez le en modifiant le titre du sujet.

Hors ligne

#3 Le 10/08/2015, à 19:51

Compte anonymisé

Re : [Résolu] Connaitre le nom du fichier auquel pointe l'url

Oui effectivement, le but est de pratiquer le script,
merci quand même inbox smile

#4 Le 11/08/2015, à 09:21

credenhill

Re : [Résolu] Connaitre le nom du fichier auquel pointe l'url

hello
l'URL est celui de Linux x64 de la page https://java.com/en/download/manual.jsp#lin

$ wget -O fichier.tar.gz -o log http://javadl.sun.com/webapps/download/AutoDL?BundleId=108139
$ grep -Pom 1 '(?<=File=)[^&]*' log
jre-8u51-linux-x64.tar.gz
$ F=$(grep -Pom 1 '(?<=File=)[^&]*' log)
$ mv fichier.tar.gz $F
$ ls *gz
jre-8u51-linux-x64.tar.gz

edit: le risque c'est que l'url change à la prochaine version

Dernière modification par credenhill (Le 11/08/2015, à 10:37)

Hors ligne

#5 Le 11/08/2015, à 11:14

Compte anonymisé

Re : [Résolu] Connaitre le nom du fichier auquel pointe l'url

je crois qu'on s'est mal compris ou j'ai dut être un peu ambigu...

J'ai récupéré la ligne de téléchargement par ma formule.
À l'origine, je ne connais pas le nom du fichier.

~$ wget -O- https://www.java.com/fr/download/linux_manual.jsp 2>&1 | grep -o -m 1 "<a title=\"Télécharger le logiciel Java pour Linux x64\".*" | awk '{print $9; end}' | sed 's/\"/ /g' | awk '{print $2; end}'
http://javadl.sun.com/webapps/download/AutoDL?BundleId=108139

Cette ligne va être inséré dans tar dans laquelle je décompresse le fichier, ce pendant, je ne connais pas son nom, je ne sais pas qu'il s'appelle jre-8u51-linux-x64.tar.gz et je veux le retrouver, comme cela ce fait AUTOMATIQUEMENT lorsque je met le lien dans la barre d'adresse de mon navigateur.

j'aimerai faire un truc du style

LienFichier=$(wget -O- https://www.java.com/fr/download/linux_manual.jsp 2>&1 | grep -o -m 1 "<a title=\"Télécharger le logiciel Java pour Linux x64\".*" | awk '{print $9; end}' | sed 's/\"/ /g' | awk '{print $2; end}')
NomFichier=$(<Commande pour avoir le nom du fichier>)
wget -P ~/Téléchargements $LienFichier && cd ~/Téléchargements
tar -zxf $NomFichier && cd

Dans ta commande, tu connais déjà le nom du fichier, moi je ne le connais pas et souhaite le savoir
De plus, aucun de tes liens donnent un résultat et je vois que tu donne le nom du fichier. sur le terminal, j'ai toujours le terminal qui cherche et n'obtient rien. Je suis obligé de forcé l'arrêt par un Ctrl+C

J'ai indiqué le nom du fichier que je veux retrouver et que j'ai eut en mettant le lien

http://javadl.sun.com/webapps/download/AutoDL?BundleId=108139

trouvé lors de ma 1ère commande, dans la barre d'adresse de mon navigateur (affichage d'une fenêtre de téléchargement du fichier)
Si l'application graphique trouve le nom il doit être possible de le connaître grâce aux commandes du terminal, enfin, en principe

Merci tout de même pour ton aide

Dernière modification par NéoUbuntonien (Le 11/08/2015, à 11:24)

#6 Le 11/08/2015, à 11:34

credenhill

Re : [Résolu] Connaitre le nom du fichier auquel pointe l'url

je ne connais pas le nom du fichier, je le trouve dans le log du wget
j'appelle le fichie fichier.tar.z et après je le renomme

Dernière modification par credenhill (Le 11/08/2015, à 11:36)

Hors ligne

#7 Le 11/08/2015, à 11:39

melixgaro

Re : [Résolu] Connaitre le nom du fichier auquel pointe l'url

salut,

à NéoUbuntonien :
peut-être n'as-tu pas été suffisamment attentif aux lignes postées par credenhill.
Lorsque tu fais un wget, tu as dû remarquer tout un tas de lignes s'affichant juste au-dessus et en-dessous de la barre de progression. Ce que te propose credenhill est de garder ces infos dans un fichier grâce à

-o log

puis d'y chercher le nom du fichier téléchargé via un grep.


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#8 Le 11/08/2015, à 11:45

Compte anonymisé

Re : [Résolu] Connaitre le nom du fichier auquel pointe l'url

Après réflexion, je crois que j'ai compris...

J'ai

LienFichier=$(wget -O- https://www.java.com/fr/download/linux_manual.jsp 2>&1 | grep -o -m 1 "<a title=".*"Linux x64\".*" | awk '{print $9; end}' | sed 's/\"/ /g' | awk '{print $2; end}')
NomFichier=$(wget -O fichier.tar.gz -o log $LienFichier && grep -Pom 1 '(?<=File=)[^&]*' log)

Dans
LienFichier : Adresse du lien
Nom du fichier : je recherche le nom en me servant du lien précédemment cherché

Je n'ai eut besoin que des deux premières ligne de ton script

Reste à comprendre la syntaxe et le fonctionnement de ces deux lignes

#9 Le 11/08/2015, à 12:03

Compte anonymisé

Re : [Résolu] Connaitre le nom du fichier auquel pointe l'url

merci melixgaro & credenhill pour ses explications

Quelques questions :
le -Pom 1 signifie quoi exactement, je ne l'ai trouvé ni dans man ni dans help ?
le '(?<=File=)[^&]*' me chiffonne également..

le (?<=File=) semble dire ce qui apparaît (je me pose des questions sur les parenthèses)
le [^&] veut-il dire la suite à partir du début ?

Dernière modification par NéoUbuntonien (Le 11/08/2015, à 12:33)

#10 Le 11/08/2015, à 12:32

melixgaro

Re : [Résolu] Connaitre le nom du fichier auquel pointe l'url

extrait du man de grep qui dit bien mieux que tout ce que je pourrai raconter ;-)

       -P, --perl-regexp
              Interpret PATTERN as a Perl regular expression (PCRE, see below).  This is highly experimental and grep -P may warn of unimplemented features.
       -m NUM, --max-count=NUM
              Stop reading a file after NUM matching lines.  If the input is standard input from a regular file, and NUM matching lines are output, grep ensures that the standard input is positioned to just after the last  matching
              line  before  exiting,  regardless of the presence of trailing context lines.  This enables a calling process to resume a search.  When grep stops after NUM matching lines, it outputs any trailing context lines.  When
              the -c or --count option is also used, grep does not output a count greater than NUM.  When the -v or --invert-match option is also used, grep stops after outputting NUM non-matching lines.
       -o, --only-matching
              Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.

ou en français,

-P, --perl-regexp
    Interpréter le MOTIF comme étant une expression rationnelle de Perl.
-m NOMBRE, --max-count=NOMBRE
    Arrêter de lire un fichier après avoir lu NOMBRE lignes qui correspondent. Si l'entrée est l'entrée standard prise depuis un fichier normal, et si NOMBRE lignes qui correspondent sont affichées, grep s'assure avant de s'arrêter que l'entrée standard est positionnée juste après la dernière ligne qui concorde, même s'il y a des lignes de contexte supplémentaires qui viennent ensuite. Ceci permet au processus d'appel de redémarrer une recherche. Quand grep s'arrête après NOMBRE lignes de concordance, il affiche éventuellement des lignes de contexte. Quand l'option -c ou --count est utilisée, grep n'affiche pas plus que NOMBRE lignes. Quand l'option -v ou --invert-match est aussi utilisée, grep s'arrête après avoir affiché NOMBRE lignes qui ne concordent pas. 
-o, --only-matching
    N'afficher que la partie d'une ligne qui correspond au MOTIF. 

je laisse credenhill expliquer la regex en détail.
Je dirai simplement que la chaîne [^&]* signifie « au moins 0 caractère quelconque, à part l'esperluette »
Si tu veux exclure plus de caractères, tu pourrais faire [^&^, ^_]* qui signifie « au moins 0 caractère quelconque, à part l'esperluette, la virgule et le souligné »

Dernière modification par melixgaro (Le 11/08/2015, à 12:34)


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#11 Le 11/08/2015, à 15:35

credenhill

Re : [Résolu] Connaitre le nom du fichier auquel pointe l'url

grep -Pom 1 '(?<=File=)[^&]*' log
P       expr. étendues
o       on ne veut pas toute la ligne, juste le résultat de l'expression
m 1     on garde que le premier résultat
(?<=File=)[^&]*          on cherche File=<tout jusqu'à &>, mais File= n'est pas affiché dans le résultat, notation (?<=...)

Hors ligne