Shell-Skript zum Hochladen einer Datei in dasselbe Unterverzeichnis auf einem Remote-Server

Shell-Skript zum Hochladen einer Datei in dasselbe Unterverzeichnis auf einem Remote-Server

Shell Script Upload File Same Subdirectory Remote Server

Eine sehr häufige Aufgabe für einen Webentwickler besteht darin, eine einzelne Datei aus einem Unterverzeichnis Ihrer Entwicklungsbox in dasselbe Unterverzeichnis auf einem Remoteserver hochzuladen. Leider ist dies immer ein lästiger manueller Vorgang, bei dem die Verzeichnisse auf beiden Servern gewechselt werden müssen und viel Zeit verschwendet.

Also habe ich es mir zur Aufgabe gemacht, ein Shell-Skript zu schreiben, um dies für mich zu automatisieren, indem ich scp zum sicheren Kopieren von Dateien verwende. (Wichtige Randnotiz: FTP ist schrecklich unsicher, verwenden Sie WinSCP stattdessen)



Das zu lösende Hauptproblem bestand darin, dass meine WordPress-Installation auf meinem Entwicklungscomputer ein anderes Basisverzeichnis hat als die Installation auf meinem Server. Auf meinem Entwicklungscomputer ist es /var/www und auf meinem Server ist es eher wie /var/www/howtogeek/docs/. Ich beschloss, diese einfach am Anfang des Skripts in Variablen zu verschieben, wie folgt:

Wie hostet man jemanden zucken

SSHSERVER=thegeek@hostname.com
RDIR = / var / www / howtogeek / docs
LDIR = ' / var / www'

Beachten Sie, dass das lokale Verzeichnis (LDIR) im Skript ein vor jedem / im Pfad hat. Dies liegt daran, dass wir dies später im Skript an einen sed-Befehl übergeben werden, also müssen wir diese Werte maskieren. Ich bin sicher, es gibt einen anderen Weg, aber ich bin mir dessen nicht bewusst.

Als nächstes richte ich automatisierte SSH-Logins ein. Dazu müssen Sie zuerst das Dienstprogramm ssh keygen wie folgt ausführen:

ssh-keygen -t rsa

Anzeige

Dann müssen Sie die Datei ~/.ssh/id_rsa.pub in die Datei ~/.ssh/authorized_keys auf dem Remote-Server kopieren. Wenn das Verzeichnis ~/.ssh bereits auf dem Remote-Server erstellt wurde (möglicherweise überprüfen möchten), können Sie diesen Befehl ausführen, um die Schlüssel zu kopieren:

Katze ~/.ssh/id_rsa.pub | ssh user@hostname ‘cat >> .ssh/authorized_keys’

mac hdd unter windows lesen

Jetzt haben wir automatisierte ssh-Anmeldungen, die die Verwendung des scp-Dienstprogramms ohne Kennwort ermöglichen. Schauen wir uns nun den scp-Befehl an, den wir im Skript verwenden werden:

scp $ 1 $ SSHSERVER: $ RDIR`pwd | sed s / $ {LDIR} // `/` echo $ 1 | sed ‘s /.*///’ `

ist der Parameter, den Sie für den Dateinamen, den Sie hochladen möchten, an das Skript übergeben. $SSHSERVER und $RDIR sind Variablen, die wir am Anfang des Skripts setzen, um den user@hostname und den vorhergehenden Remote-Pfad festzulegen.

So ändern Sie den Benutzernamen Spotify

Der erste Block, der mit pwd|sed beginnt, nimmt den aktuellen Verzeichnispfad und entfernt den vorhergehenden Teil des Pfads, der nicht mit dem entfernten Server übereinstimmt, lässt aber den Rest des Pfads. Wenn Sie sich zum Beispiel in /var/www/wp-content/ befanden, als Sie den Befehl ausführen, würde der sed-Block das /var/www basierend auf unserer LDIR-Variablen entfernen, aber den /wp-content/-Teil davon lassen .

Der zweite Block stellt nur sicher, dass der gesamte vorangehende Pfad aus dem an das Skript übergebenen Dateinamen entfernt wird, damit Sie nur den Dateinamen erhalten.

Wenn Sie beispielsweise das Skript up.sh benannt und es in Ihrem lokalen Verzeichnis /var/www/wp-content/plugins/ in einer Datei ausgeführt haben:

up.sh myplugin.php

Was ist ein ISO-Image?
Anzeige

Dies wäre durch die Shell wie folgt erweitert worden:

scp myplugin.php thegeek@hostname.com:/var/www/howtogeek/docs/wp-content/plugins/myplugin.php

Anstatt zu versuchen, basierend auf dem Artikel eine eigene Skriptdatei zu erstellen, habe ich sie zum Download bereitgestellt. Auf diese Weise wird es keine Probleme geben, wenn Sonderzeichen nicht funktionieren ... und ja, ich habe das Skript zum Hochladen verwendet =)

Laden Sie geek-uploader.sh herunter

Legen Sie es einfach irgendwo in Ihren Weg und benennen Sie es, wie Sie möchten. Ich habe meine in 'just up' umbenannt, damit ich zum Hochladen einfach filename.txt eingeben kann. Denken Sie auch daran, es zu öffnen und die Variablen am Anfang des Skripts an Ihre Umgebung anzupassen.

Dieses Skript sollte mit einer *nix-Shell und dem Dienstprogramm scp funktionieren. Ich verwende Ubuntu, aber es sollte unter Solaris, OS X oder sogar Windows mit installiertem Cygwin funktionieren.

WEITER LESEN
  • › How-To Geek: Erstes Jahr im Rückblick
  • › So finden Sie Ihr Spotify Wrapped 2021
  • & rsaquo; Cyber ​​Monday 2021: Die besten Tech-Deals
  • › 5 Websites, die jeder Linux-Benutzer mit einem Lesezeichen versehen sollte
  • › Was ist MIL-SPEC Fallschutz?
  • › Funktionen vs. Formeln in Microsoft Excel: Was ist der Unterschied?
  • › Der Computerordner ist 40: Wie Xerox Star den Desktop erstellte
Profilfoto für Lowell Heddings Lowell Heddings
Lowell ist Gründer und CEO von How-To Geek. Er leitet die Show seit der Erstellung der Site im Jahr 2006. In den letzten zehn Jahren hat Lowell persönlich mehr als 1000 Artikel geschrieben, die von über 250 Millionen Menschen angesehen wurden. Bevor Lowell mit How-To Geek begann, arbeitete er 15 Jahre lang in der IT mit Beratungs-, Cybersicherheits-, Datenbankmanagement- und Programmierarbeiten.
Vollständige Biografie lesen