ubuntuusers.de

wget mit variablen URLs aus Liste [Script]

Status: Ungelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

matschd

Anmeldungsdatum:
7. November 2016

Beiträge: Zähle...

Guten Tag,

undzwar habe ich folgendes Anliegen: Unter beispielsweise http://10.10.10.10/x.x.x.x/generic liegt eine PDF (Endung ist nicht in der URL) diese muss ich runterladen und unter ensprechendem Namen "x.x.x.x" abspeichern.

http://10.10.10.10/10.10.10.2/generic (datei soll dann 10.10.10.2 heißen und die endung .pdf haben)

Ich möchte nun das wget, x.x.x.x ersetzt mit Einträgen aus einer Liste.txt und solange runterlädt bis alle Einträge abgearbeitet sind. (Rekursiv? über While?)

Da ich recht neu in solchen Dingen bin und garkeine Ahnung habe, aber auch keine Lust habe die nächsten Stunden am Rechner zu sitzen und jede Adresse manuell zu erstzen, wollte ich euch nun Fragen ob es vlt jemanden gibt der mir mit einem kleinen Script helfen kann.

Ich hoffe es ist deutlich geworden was ich machen möchte und bedanke mich hiermit schonmal im vorraus. ☺

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4453

Wohnort: Göttingen

Hm, mal ohne Gewähr:

while read line; do wget http://10.10.10.10/${line}/generic --output-document ${line}.pdf ; done < Liste.txt

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13205

Doc_Symbiosis schrieb:

while read line; do wget http://10.10.10.10/${line}/generic --output-document ${line}.pdf ; done < Liste.txt

Sieht schon gut aus. Ich würde dann noch passend quoten und curl nehmen:

1
2
3
while read line; do
  curl -s "http://10.10.10.10/${line}/generic" -o "${line}.pdf"
done < Liste.txt

Man kann das mit xargs noch etwas eleganter machen:

1
xargs -a Liste.txt -rI{} curl -s 'http://10.10.10.10/{}/generic' -o '{}.pdf'

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4453

Wohnort: Göttingen

Cool! Das kannte ich so ja noch gar nicht. Herzlichen Dank! Man lernt halt nie aus...

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13205

Doc_Symbiosis schrieb:

Cool! Das kannte ich so ja noch gar nicht. Herzlichen Dank! Man lernt halt nie aus...

Ja, absolut! Ich habe das auch erst vor einer Weile hier im Forum gelernt. Mitlesen zahlt sich aus. ☺

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4453

Wohnort: Göttingen

Ja, mein letzter Tipp, den ich gefunden war Alt + . . Kein Shortcut, den ich so häufig verwende wie diesen.

Sorry, falls das vom Thema abweicht, aber diesen Shortcut trage ich weiter, wo es geht...

matschd

(Themenstarter)

Anmeldungsdatum:
7. November 2016

Beiträge: 2

Ich habe es jetzt ganz einfach gelöst mit

1
2
3
4
5
6
7
8
9

#!/bin/bash

for IP in $(cat /root/IP.txt)
do
	echo $IP 
	curl -k "URL" > $IP.pdf
	sleep 2
done

☺ Vielen Dank für die schnellen Antworten !

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13205

matschd schrieb:

Ich habe es jetzt ganz einfach gelöst mit

Wirklich?

1
2
3
4
5
6
7
8
9

#!/bin/bash

for IP in $(cat /root/IP.txt)
do
	echo $IP 
	curl -k "URL" > $IP.pdf
	sleep 2
done

Da ist eine Leerzeile am Anfang zu viel, die die Shebang-Zeile nicht wirksam werden lässt. Du lädst immer dieselbe URL namens "URL"???

☺ Vielen Dank für die schnellen Antworten !

Ich glaube nicht, dass das Deine Lösung ist.

matsch95

Anmeldungsdatum:
14. April 2014

Beiträge: Zähle...

Ich darf die URL aus Gründen nicht so angeben. Und deswegen habe ich sie so entfernt, wobei das $IP rausgeflogen ist 😉

1
2
3
4
5
6
7
8
#!/bin/bash

for IP in $(cat /root/IP.txt)
do
	echo $IP 
	curl -k "http://10.10.10.10/$IP/generic" > $IP.pdf
	sleep 2
done

Beispiel-Inhalt der IP.txt:

1
2
3
10.10.10.10
10.10.10.11
10.10.10.12

Und damit hat es auch wunderbar funktioniert. Die erste Zeile ist im Original nicht leer.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13205

matsch95 schrieb:

Und damit hat es auch wunderbar funktioniert. Die erste Zeile ist im Original nicht leer.

Ich finde ja die Lösung mit xargs eleganter, aber so hat halt jeder seine Vorlieben.

Antworten |