Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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. :)

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

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

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

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.

Frank

Nee, 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

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

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...

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....

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.