Woodstock Geschrieben 20. August 2004 Geschrieben 20. August 2004 Hallo, ich muss immer wieder von einem Windows Rechner aus per Telnet auf eine Linux Maschine um dort Verzeichnisse zu löschen. Es handelt sich dabei immer um die selbern Verzeichnisse, und es ist immer relativ viel Arbeit. Deshalb würde ich gerne eine Batch Datei auf dem Windows Rechner starten, wo automatisch eine Verbindung über Telnet hergestellt, und die Verzeichnisse gelöscht werden. Dazu ein paar Fragen: 1. Geht das überhaupt 2. Wie muss ich das schreiben wenn ich login und Passwort mitgeben will 3. Wie sieht das aus mit Variablen? Kann ich welche benutzen, und wenn ja wie? Ich hoffe Ihr könnt mir weiterhelfen. Bine Zitieren
Hawkeye Geschrieben 20. August 2004 Geschrieben 20. August 2004 Nur mal ganz daemlich gefragt: Warum erstellst Du nicht auf der Linux-Maschine ein Shell-Skript, was den Loeschvorgang fuer Dich erledigt? Dann musst Du Dich zwar immer noch kurz per Telnet mit der Maschine verbinden, aber Du musst nicht Username und Passwort irgendwo hinterlegen und im Grundsatz willst Du Dir doch nur die Loescharbeiten angenehmer machen. Und genau das kannst Du ja von Linux-seite aus machen. Zitieren
Woodstock Geschrieben 20. August 2004 Autor Geschrieben 20. August 2004 Nur mal ganz daemlich gefragt: Warum erstellst Du nicht auf der Linux-Maschine ein Shell-Skript, was den Loeschvorgang fuer Dich erledigt? Dann musst Du Dich zwar immer noch kurz per Telnet mit der Maschine verbinden, aber Du musst nicht Username und Passwort irgendwo hinterlegen und im Grundsatz willst Du Dir doch nur die Loescharbeiten angenehmer machen. Und genau das kannst Du ja von Linux-seite aus machen. Also, das Problem liegt darin das ich in diesem Script immer was verändern müßte. Es handelt sich bei den Verzeichnissen die ich löschen muss um Backup-Verzeichnisse von eMail Konten. Und das sind immer unterschiedliche (deswegen die Frage nach der Variablen). Aber der Ablauf ist immer gleich. Wenn ich also einfach einer Variablen anstelle von xy ab zuweisen könnte, und das dann ablaufen lassen könnte, wäre das optimal. Ich habe aber von solchen Sachen noch so gut wie keine Ahnung. Batchdateien nur ein wenig, aber Shellscripte gar nicht. Wie müßte das denn dann aufgebaut sein? Bine Zitieren
robotto7831a Geschrieben 20. August 2004 Geschrieben 20. August 2004 Shellsrkipte sind im Prinzip auch nichts anderes als Batchdateien. Du schreibst die Befehle alle untereinander und läst es laufen. Du kannst Shellskripte Paramter mitgeben. $1 ist der erste Parameter, $9 ist der neunte Paramter. Frank Zitieren
Woodstock Geschrieben 20. August 2004 Autor Geschrieben 20. August 2004 Shellsrkipte sind im Prinzip auch nichts anderes als Batchdateien. Du schreibst die Befehle alle untereinander und läst es laufen. Du kannst Shellskripte Paramter mitgeben. $1 ist der erste Parameter, $9 ist der neunte Paramter. Frank Sorry, aber das ist für jemanden der keine ahnung davon hat gar nicht hilfreich. Jetzt bin ich genau so schlau wie vorher. Sagen wir einfach mal ich habe eine variable a und weise der der Verzeichnisnamen xy zu und will dann dieses Verzeichnis löschen. Wie muss ich das schreiben, und wie kann ich das Script dann ausführen? Bine Zitieren
Grendel Geschrieben 20. August 2004 Geschrieben 20. August 2004 Guckst Du hier: http://www.linuxfibel.de/bashprog.htm Bis neulich ... Zitieren
robotto7831a Geschrieben 20. August 2004 Geschrieben 20. August 2004 Du schreibst ein Shellskript mit folgendem Inhalt. #!/bin/sh rmdir $1 Das Skript speicherst Du mit der Dateiendung sh. Also z. B. skript.sh. Dann rufst Du das Skript wie folgt auf. sh skript.sh /verzeichni1/email_backup Das würde dann das Verzeichnis email_backup im Unterverzeichnis verzeichnis1 löschen. Frank Zitieren
Woodstock Geschrieben 20. August 2004 Autor Geschrieben 20. August 2004 Du schreibst ein Shellskript mit folgendem Inhalt. Das Skript speicherst Du mit der Dateiendung sh. Also z. B. skript.sh. Dann rufst Du das Skript wie folgt auf. sh skript.sh /verzeichni1/email_backup Das würde dann das Verzeichnis email_backup im Unterverzeichnis verzeichnis1 löschen. FrankNee, also der lange Parameter geht nicht. Es gibt ein Unterverzeichnis mit dem Namen den ich in der Variablen speichern will in über 50 Verzeichnissen. Die Datei soll also in etwa so aussehen: #!/bin/sh $user rm ???/???/???/???/$user rm ???/AAA/???/???/$user etc.! Und dann ruf ich das so auf: sh skript.sh /testuser Geht das? Bine Zitieren
robotto7831a Geschrieben 20. August 2004 Geschrieben 20. August 2004 rmdir $1/abc rmdir $1/def geht natürlich. Frank Zitieren
Woodstock Geschrieben 20. August 2004 Autor Geschrieben 20. August 2004 rmdir $1/abc rmdir $1/def geht natürlich. Frank Und wie muss ich das mit der Variablenübergabe machen? Also was muss ich schreiben damit er mir das was ich beim Aufrufen übergebe in die Variable übernimmt?!?! Bine Zitieren
robotto7831a Geschrieben 20. August 2004 Geschrieben 20. August 2004 Das steht doch in $1. Frank Zitieren
tobias-digital Geschrieben 20. August 2004 Geschrieben 20. August 2004 Nur mal ganz daemlich gefragt: Warum erstellst Du nicht auf der Linux-Maschine ein Shell-Skript, was den Loeschvorgang fuer Dich erledigt? Dann musst Du Dich zwar immer noch kurz per Telnet mit der Maschine verbinden [...] Man könnte das Skript natürlich auch als Cron-Job starten. Z.B. alle 24h. Die gewonnene Zeit kann man besser investieren, z.B. ein Ei essen oder Tauben angucken, oder so... Zitieren
Schlaubi Geschrieben 20. August 2004 Geschrieben 20. August 2004 Hier mal die Erklärung von $0-9 Also die Bash (also die Shell - Kommandozeileninterpreter) ermöglicht es über $0-$9 (im Prinzip gehen auch mehr) Argumente unter anderem einem Skript zu übergeben. Du kannst ja mal auf der Linuxgurke bissl rumtesten... Schreib dir einfach mal ein kleines Shellskript das du z.B. 'para.sh' nennst, dann mach es ausführbar mit chmod 755 para.sh Sodala...in das Skript schreibst du folgendes: !# /bin/bash echo $0 echo $1 echo $2 echo $3 echo $4 echo $5 echo $6 echo $7 echo $8 echo $9 und nun kannst du es ausführen (keine Angst du machst nix kaputt, ehrlich) und zwar so: ./para.sh du wirst merken dass folgendes ausgegeben wird: ./para.sh Warum ist das so fragst du dich sicher...ganz einfach $0 ist der Name des Skriptes...die anderen also $1-$9 enthalten keine Argumente...deshalb nur Leerzeilen. Nun kannst du folgendes probieren: ./para.sh a b c d e f g h i Und du wirst merken, dass so dein Output aussieht: ./para.sh a b c d e f g h i So das war doch nicht so schwer oder? Nun kannst du natürlich auch diese übergebenen Werte also Argumente einer Variablen in deinem Skript zuweisen, etwa so: !# /bin/bash variable=$1 echo "Du hast mir '$variable' als Argument übergeben" Nun kannst du dir denken, was passiert, wenn du dein Skript folgendermaßen aufrufst: ./para.sh blubb Wenn du dein Skript nur so aufrufst: ./para.sh ist die Variable namens 'variable' halt einfach leer und dein Skript wird folgendes ausgeben: Du hast mir '' als Argument übergeben Wenn du das verstanden hast, dann können wir einen Schritt weitergehen.... Zitieren
Woodstock Geschrieben 23. August 2004 Autor Geschrieben 23. August 2004 So, nun hab auch ich das kapiert. Und es funktioniert. Und es spart mir eine Menge Zeit die ich nun wieder sinnvoll nutzen kann. Das ganze Als CronJob laufen zu lassen finde ich auch nicht schlecht - aber da muss ich erst mit meinem Abteilungsleiter drüber sprechen der momentan leider krank ist. Vorerst hilft mir das schon mal wirklich weiter. Ich danke Euch *knutsch* Bine Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.