Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Shell-Script nach FTP-Upload

Alles rund um das Internet, Internet-Anwendungen (E-Mail, Surfen, Cloud usw.) und das Einrichten von Netzwerken einschl. VPN unter Linux

Moderator: Moderatoren

Antworten
LittleJo
Newbie
Newbie
Beiträge: 2
Registriert: 27. Jan 2005, 10:49

Shell-Script nach FTP-Upload

Beitrag von LittleJo »

Hallo Forum,

folgende Sache würde ich gern realisieren:

Auf meinem kleinen Server habe ich den vsFTPd laufen. Nach einem Upload würde ich nun gern die Dateien in ein weiteres Verzeichnis verschieben und das möglichst zeitnah, ohne aber alle zwei Sekunden mein Shell-Script via Cron anschubsen zu müssen. Gibt es eine Möglichkeit das Shell-Script genau dann auszuführen, wenn eine Datei gespeichert worden ist :?:

Besten Dank und Gruß
LittleJo
Gast

Beitrag von Gast »

ein script mit ungefähr folgendem inhalt schreiben:

ls VERZEICHNIS | grep -v grep | grep * > /dev/null
variable_setzen=$(ls VERZEICHNIS | grep -v grep | grep *)
check=$?
[ $check -eq 0 ] && mv $variable_setzen NEUES VERZEICHNIS

dann speichern, chmod +x auf das script, und selbiges dann in bestimmten zeitabständen per cron ausführen lassen.
andere möglichkeiten fallen mir jetzt grad nicht ein.....sorry
Benutzeravatar
snaewe
Hacker
Hacker
Beiträge: 415
Registriert: 13. Dez 2004, 16:32
Wohnort: Zu Hause

Beitrag von snaewe »

Was soll das 'grep -v grep' und warum das erste 'ls VERZEICHNIS | grep -v grep | grep * > /dev/null' ?
Der Name Windows stammt ursprünglich aus dem Indianischen und
bedeutet: "Weißer Mann, der auf eine Sanduhr starrt."
Gast

Beitrag von Gast »

wenn man greppt ohne das grep -v grep zeigt er (meisstens) sich selbst an, dun das dev/null ist damit das check=$? überhaupt funktioniert...../dev/null speichert ergebnisse im binären format glaube ich, und deshalb kann man auslesen ob etwas gefunden/nicht gefunden wurde damit

soviel zum thema linux-shell-script programmierung :-)

--> analysier einfach mal den code genau, du wirst feststellen dass das sinnvoll ist, man kann es natürlich (wie immer) elegantzer lösen aber hauptsache es geht, ne...
Benutzeravatar
snaewe
Hacker
Hacker
Beiträge: 415
Registriert: 13. Dez 2004, 16:32
Wohnort: Zu Hause

Beitrag von snaewe »

tha_specializt hat geschrieben:wenn man greppt ohne das grep -v grep zeigt er (meisstens) sich selbst an,
Ja, bei 'ps aux|grep blah' macht das Sinn - aber hier ?
tha_specializt hat geschrieben:dun das dev/null ist damit das check=$? überhaupt funktioniert.....
Aber $? enthält den Returncode der letzten ausgeführten 'Foreground Pipeline'
info bash hat geschrieben:`?'
Expands to the exit status of the most recently executed foreground
pipeline.
tha_specializt hat geschrieben:/dev/null speichert ergebnisse im binären format glaube ich, und deshalb kann man auslesen ob etwas gefunden/nicht gefunden wurde damit
/dev/null speichert gar nicht. Es ist eine reine Senke - Schwarzes Loch

Im Prinzip ist das richtig, was du sagst, aber da du nach dem 'grep ...>/dev/null' noch was anderes ausführts, ist der Return-Code ja ein anderer.
tha_specializt hat geschrieben: --> analysier einfach mal den code genau, du wirst feststellen dass das sinnvoll ist, man kann es natürlich (wie immer) elegantzer lösen aber hauptsache es geht, ne...
Geht's wirklich ?
Der Name Windows stammt ursprünglich aus dem Indianischen und
bedeutet: "Weißer Mann, der auf eine Sanduhr starrt."
Gast

Beitrag von Gast »

natürlich gehts, ich wende es jeden tag an.....tippfehler ausgeschlossen....falls ein zeichen oben ned stimmen sollte bitte hauen! :lol:
ich kann ned genau sagen warum, aber wenn man dies benutzt liest es tatsächlich /dev/null aus, denn null speichert sachen, allerdings nur ob JA/nein, mehr nicht, und das reicht ja zum suchen
Benutzeravatar
snaewe
Hacker
Hacker
Beiträge: 415
Registriert: 13. Dez 2004, 16:32
Wohnort: Zu Hause

Beitrag von snaewe »

  1. Nein, du liest nicht /dev/null aus, sondern wertest lediglich den Return-Code aus (und der wird nicht in /dev/null, sondern in $? gespeichert)
  2. Das 'grep -v grep' macht da definitiv keinen Sinn (im Gegentum - wenn jemals eine Datei mit dem Namen IrgenwasgrepIrgendwas in dem besagten Verzeichnis erscheint, wird die ausgelassen)
Der Name Windows stammt ursprünglich aus dem Indianischen und
bedeutet: "Weißer Mann, der auf eine Sanduhr starrt."
Gast

Beitrag von Gast »

und wieso funzt es dann? wieso legt das system mein ergebnis in $? ab anstatt in null ?
Benutzeravatar
snaewe
Hacker
Hacker
Beiträge: 415
Registriert: 13. Dez 2004, 16:32
Wohnort: Zu Hause

Beitrag von snaewe »

tha_specializt hat geschrieben:und wieso funzt es dann?
Zufall...
Siehe den Hinweis auf die Datei 'IrgendwasgrepIrgendwas'
tha_specializt hat geschrieben:wieso legt das system mein ergebnis in $? ab anstatt in null ?
Das ist ein Feature der bash (anderer Shells wahrscheinlich ebenso) den Return-Code eines Programms (bzw. einer 'foreground pipeline') in $? abzulegen.
Siehe auch hier: http://www.tldp.org/LDP/abs/html/exit-status.html

Und nochmal laut: IN /dev/null KANN MAN NIX ABLEGEN
Der Name Windows stammt ursprünglich aus dem Indianischen und
bedeutet: "Weißer Mann, der auf eine Sanduhr starrt."
Gast

Beitrag von Gast »

na dann bin ich ja jetzt schlauer...
Antworten