Posts mit dem Label Shell werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Shell werden angezeigt. Alle Posts anzeigen

Donnerstag, 24. Oktober 2024

Rsync - Sicherung von Dateien (auf dem Synology NAS) mit Fortschrittsbalken (Rsync Progress)

Mit Hilfe von rsync lassen sich z.B. Dateien auf einem NAS kopieren. Dies ist in der Regel komfortabler, wie mit cp/scp (siehe auch Rund um Linux - Einige nützliche Befehle für die Shell I).


Hierfür muss vorab auch das Rsync-Konto unter "Dateidienste" aktiviert werden, denn sonst kommt es zu dem Fehler "rsync @ERROR: account system disabled". 


Anschließend muss der nachfolgende rsync Syntax verwendet werden.

rsync [user]@[server]::[modul]

  • [user] - FTP-Account
  • [server] - IP/Domain
  • [modul] - FTP-Account
  • -e ssh - SSH-Verbindung nutzen
  • --progress - Fortschrittsbalken anzeigen
  • -a Archive Mode - Erhalt von Dateiattributen
  • -u update - Überschreibt Dateien nur, falls diese aktueller sind
  • -v verbose - Erweiterte Ausgabe
  • -z compress - Komprimierung, um Bandbreite zu sparen


Beispiel für ssh:
rsync /home/deck/pwdata.kdbx -e ssh --progress redleffer@192.168.1.50::redleffer/pwdata.kdbx

Beispiel für ftp:
rsync /home/deck/pwdata.kdbx --progress redleffer@192.168.1.50::redleffer/pwdata.kdbx


Mittwoch, 26. Juli 2023

Rund um Linux - Shellbefehle dank "explainshell.com" verstehen

Wie kann man verstehen, was genau ein Shellbefehl macht ohne die jeweiligen Manpages zu lesen? Die Webseite explainshell.com kann hier helfen! Nützliche Befehle bzw. Beispiele findet man in meinem Beitrag Rund um Linux - Einige nützliche Befehle für die Shell II (Download mit wget und seq).

Die Webseite explainshell.com durchsucht Informationen von über 30.000 Manpages.

Dennoch kann es vorkommen, dass Parameter nicht ermittelt werden können. Hier hilft dann nur eine manuelle Recherche in den jeweiligen Manpages.

Montag, 20. Dezember 2021

Linux - Dateien hochladen (file upload) mit curl

In dem Artikel "Linux - Mit curl Dateien herunterladen und Webseiten aufrufen" habe ich bereits sehr viele Möglochkeiten von curl aufgezeigt. In diesem Beitag werde ich die Möglichkeit von einem Datei Upload beschreiben.


Upload
curl -u <user>:<passwort> -T <datei> https://server.de


Upload mit Fortschrittsanzeige
curl -u <user>:<passwort> -T <datei> https://server.de > /dev/null


Sonntag, 27. Juni 2021

Linux - Mit curl Dateien herunterladen und Webseiten aufrufen

Durch curl ist es möglich von Webseiten (mittels Login und Cookies) auf Informationen per Kommandozeile zuzugreifen oder auch Dateien herunterzuladen. In dem Beitrag Linux - Statische Kopie einer Webseite anlegen mit wget bin ich bereits auf die Möglichkeiten von wget eingegangen.

Curl unterstützt neben HTTP eine Vielzahl von weiteren Netzwerkprotokollen wie FTP, FTPS, HTTPS, GOPHER, TELNET, DICT, FILE und LDAP.

In der Regel ist curl vorinstalliert, ansonsten geht dies über den folgenden Befehl:
sudo apt-get install curl 

Folgende Optionen lassen sich Beispielhaft mit curl ausführen

Den Inhalt der heruntergeladenen Datei in den angegebenen DATEINAME schreiben, anstatt in die Standardausgabe:
curl -o DATEINAME "URL"

Wiederaufnahme eines vorangegangenen Downloads (--continue-at OFFSET)
curl -C - "URL"

Den Anforderungs- und Antwortheader anzeigen
curl -v "URL"

HTTP-Header mit eigenen Daten einfügen (z.B. Content-Type oder Accept-Language), hierbei darf -H auch mehrfach verwendet werden.
curl -H 'Content-Type: application/json' "URL"
curl -H 'Accept-Language: de' "URL"


Zum Beispiel lässt sich so das Wetter in ASCII-Grafik auf der Konsole in unterschiedlichen Sprachen anzeigen:
curl -H 'Accept-Language: de' "https://wttr.in/Obergeis"
curl -H 'Accept-Language: en' "https://wttr.in/Obergeis" 

Verbindung SSL oder TLS herstellen
curl --sslv3 "URL"
curl --tlsv1.1 "URL"

Skripte mit python oder bash ausführen
-s, Silent or quiet mode. Don't show progress meter or error messages.
-f, (HTTP)  Fail  silently  (no  output at all) on server errors.
Kleiner Tipp, mit Hilfe von "https://explainshell.com/explain?cmd=curl+-sSL" kann man schnell heausfinden, was der Befhel bedeutet. 

curl -sf "URL" | sudo python3
Achtung: Da hier direkt die Installation eines Skripts mit höheren Rechten erfolgt, macht es ggf. Sinn erst das Skript herunterzuladen um dann mit z.B. less installer.py zu prüfen, was es genau tut.

Siehe z.B. Raspberry Pi-hole - Installation
curl -sSL https://install.pi-hole.net | bash

Verbindung über einem Proxy aufbauen
curl -x yourproxy:port "URL"
-x, <[protocol://][user@password]proxyhost[:port]>

User-Agent verändern und eine URL aufrufen
curl -LA "Mozilla/5.0 (MSIE; Windows 10)" "https://www.google.com/search?q=Obergeis"
Hinweis: Siehe auch List of User Agent strings.

Formulardaten an einen Server senden, ist mit Hilfe von curl -X POST und -F für jedes Feld (field=value), welches man beim POST hinzufügen möchte, möglich.
curl -X POST -F 'username=admin' -F 'password=123456' https://test.de/login.php
Hinweis: Weitere Beispiele finden sich unter https://gist.github.com/subfuzion/08c5d85437d5d4f00e58#file-curl-md .

Cookies erstellen und verwenden (https://curl.se/docs/http-cookies.html)
Erstellen eines Cookies
curl -c "/tmp/cookie" http://localhost:8080/login -d username=admin password=123456
Verwenden eines Cookies
curl -b "/tmp/cookie" http://localhost:8080/getUserData

Curl Befehle mit Hilfe von Firefox kopieren

Dank der Entwicklerwerkzeuge in Firefox, lassen sich curl-Befehle einfach kopieren.



Dienstag, 3. November 2020

Linux - Die gesamten Handbuchseiten (man pages) durchsuchen

Manchmal muss man bestimmte Wörter in allen Handbuchseiten (manual pages) nachschlagen. Hierbei hilft der Befehl "man -k <beispiel>".

"man" ist der wohl häufigste Weg, um an Informationen über Befehle des jeweiligen Programm zu bekommen.


Eine nützliche Funktion ist "man -k <beispiel>", um alle man-Seiten zu durchsuchen. Das ist sehr praktisch, wenn man den genauen Befhel nicht kennt.


Freitag, 9. Oktober 2020

Linux - Statische Kopie einer Webseite anlegen mit wget

Bereits in anderen Artikeln habe ich auf die Verwendungsmöglichkeiten von wget hingewiesen. Siehe z.B. Rund um Linux - Einige nützliche Befehle für die Shell II (Download mit wget und seq), Webservice Abfrage per Konsole mit wget und Erreichbarkeit von Webseiten oder Servern mit wget überpfüfen inkl. E-Mail Versand. Mit wget lassen sich sehr gut statische Kopien von Websites erstellen.


Ein einfaches wget [url] ist leider nicht ausreichend, da u.a. verschiedene Ressourcen pauschal nicht mitgeladen werden. 

Damit dies vollumfänglich funktioniert, sind die folgenden Parameter notwendig (siehe auch http://www.gnu.org/software/wget/manual/wget.html):

wget -p -nh -H -k -E -w 1 -r -l 1 [URL]

Siehe auch c't 21/2020 S. 154 Praxis Websites kopieren.

‘-p’ => ‘--page-requisites’
This option causes Wget to download all the files that are necessary to properly display a given HTML page. This includes such things as inlined images, sounds, and referenced stylesheets.

‘-nH’ => ‘--no-host-directories’
Disable generation of host-prefixed directories. By default, invoking Wget with ‘-r http://fly.srk.fer.hr/’ will create a structure of directories beginning with fly.srk.fer.hr/. This option disables such behavior.

‘-H’ => ‘--span-hosts’
Enable spanning across hosts when doing recursive retrieving (see Spanning Hosts).

‘-k’ => ‘--convert-links’
After the download is complete, convert the links in the document to make them suitable for local viewing

‘-E’ => ‘--adjust-extension’

If a file of type ‘application/xhtml+xml’ or ‘text/html’ is downloaded and the URL does not end with the regexp ‘\.[Hh][Tt][Mm][Ll]?’, this option will cause the suffix ‘.html’ to be appended to the local filename.

‘-w seconds’ => ‘--wait=seconds’
Wait the specified number of seconds between the retrievals. Use of this option is recommended, as it lightens the server load by making the requests less frequent.

‘-r’ => ‘--recursive’
Turn on recursive retrieving. See Recursive Download, for more details. The default maximum depth is 5.

‘-l depth’ => ‘--level=depth’
Specify recursion maximum depth level depth (see Recursive Download).


Allgemein nützliche Informationen zu wget finden sich auch hier: Frequently Asked Questions About GNU Wget.

Sonntag, 26. Juli 2020

Rund um Linux - Einige nützliche Befehle für die Shell II (Download mit wget und seq)

Nach 7 Jahren ein kurzes Update für meinen Beitrag "Rund um Linux - Einige nützliche Befehle für die Shell I" um die Shell als Downloadhelfer (wie auch hier Download von Video Streams mit ffmpeg und hier Regenradar - Bilder sammeln oder manuell abrufen beschrieben) verwenden zu können.


Der Download von Bildern mit einer Schleife ist relativ einfach möglich. Möchte man z.B. folgende Bilder mit einer bestimmten Nummerierung herunterladen:
Kann man dank seq Zahlen in einem definierten Bereich ausgegeben und mit Hilfe des Parameters -w auch führende Nullen hinzugefügen.

seq -w 3 10
03
04
05
06
07
08
09
10


Daraus ergibt sich der folgende Befehl:
for i in `seq -w 01 05`; do wget https://www.shemel.de/download/images/test_2020-${i}.jpg ; done

Will man die Statusmeldungen von wget unterdrücken, kann man noch den Parameter -q hinzufügen:
for i in `seq -w 01 05`; do wget -q https://www.shemel.de/download/images/test_2020-${i}.jpg ; done


Möchte man Bilder einer kompletten Gallery herunterladen, ist dies auch mit Hilfe von wget möglich.


wget -q -r -np https://www.tafel-hef.de/bilder.php

  • Mit Hilfe des Parameters -r werden rekursiv alle Dateien heruntergeladen, die bei der hinterlegten Adresse verlinkt sind.
  • Mit dem Parameter -np werden nur Dateien die unterhalb des Verzeichnisses liegen heruntergeladen (no-parent). Achtung: In dem oben genannten Beispiel funktioniert dies nicht, da die URL nicht mit "/" endet. So wird die komplette Webseite heruntergeladen (inkl. aller Bilder).

Mit Hilfe von youtube-dl, kann man per Kommandozeile Videos von youtube.com und anderen Video Plattformen herunterladen.


youtube-dl "https://www.youtube.com/watch?v=BvjterYmC98"

Viele Beispiele finden sich hier https://wiki.ubuntuusers.de/youtube-dl/ .

Sonntag, 5. Mai 2013

Rund um Linux - Einige nützliche Befehle für die Shell I

Anbei eine Auflistung einiger nützlichen Linux Befehle (ich verwendet vorwiegend Ubuntu), die ich von Woche zu Woche, mal mehr oder weniger verwende.

Vielleicht ist ja auch für euch was nützliches dabei :-)


Datei(en) finden
 find /var/www/* | grep index*.*  

Belegter Platzen-Platz checken
 du -h --exclude=/proc --exclude=/sys --exclude=/media --exclude=/dev --max-depth=1 /  

Datei mit scp auf einen anderen Server kopieren
 scp -P 222 tomcat.sh user@test.server.de:/etc/init.d  

Duplikate von Dateien finden
Dafür kann man das Programm fdupes verwenden, siehe auch http://www.tuxfutter.de/wiki/Fdupes
 fdupes -r /opt/olw/nfs/elc_roh/archive > /home/ubuntu/xdupes.txt  

PermitRootLogin
Mit der Option "PermitRootLogin" gibt man an ob sich der User root direkt per SSH anmelden darf oder ob man sich erst mit einem normalen User authentifizieren muss und dann per "su -" zu root wird.
 /etc/ssh$ sudo vi sshd_config  
PermitRootLogin auf "no" setzen oder auskommentieren!
Anschließend neustart von sshd (/etc/init.d/ssh restart)

ll: command not found
 alias ll='ls -l'  

Dateigröße in MB/GB anzeigen
 du -hs catalina.out  

Verzeichnis packen und entpacken mit tar.gz
Um ein Verzeichnis mit tar.gz zu packen:
 tar cfvz irgendeinname.tar.gz verzeichnisname/  
Um ein Verzeichnis mit tar.gz zu entpacken:
 tar xfvz test.tar.gz  

Eine Datei auf 0 byte setzen
 >catalina.out  
Dies ist z.B. sinnvoll, wenn man im laufenden Betrieb die Datei nicht löschen oder leeren kann.

Mit grep innerhalb von Dateien suchen 
 grep -r 'JkWorkersFile' /etc/*  

Aktuell offene Ports anzeigen
 sudo netstat -tulpen | grep -v '127.0.0.1' | grep -v '::1:'  

Portscanner von einem anderen Rechner aus starten
 sudo nmap 130.80.47.XXX  

Repositories von Ubuntu anzeigen
 less /etc/apt/sources.list  

wget - failed: Connection refused
Evtl. muss ein Proxy Server eingetragen werden!
 http_proxy=http://proxy.uni.de:80; export http_proxy  
 https_proxy=http://proxy.uni.de:443; export https_proxy  
Falls dies bei dem sudo Befehl vorkommt:
 sudo visudo
 Defaults !env_reset  
Siehe auch:  https://bbs.archlinux.org/viewtopic.php?id=94273

Falsche Server Zeit aktulisieren
1. Die Hardware-Uhr umstellen
 sudo hwclock --set --date="12/28/2011 12:26:10"  
2. Die Systemzeit nach der Hardware-Uhr stellen
 sudo hwclock --hctosys  
3. Zeitzone einstellen
 sudo tzselect  

Su/Sudo Script ohne nachfragen des Passworts 
 sudo visudo  
 ubuntu ALL = (ALL) NOPASSWD: /etc/init.d/tomcat6  

Cron-Job für den Neustart von Tomcats in der Nacht um 03:00 UHr 
sudo vi /etc/crontab oder crontab aufrufen -e aufrufen
 0 3   * * *  ubuntu /etc/init.d/tomcat6 restart