Linux: via script auf einen anderen Server zugreifen und dort Aktionen ausführen?
Hallo,
ich möchte unter Linux von einem Server auf einen anderen Server zugreifen, dort in ein Verzeichnis (z.B. /home/verzeichnis_1) wechseln und dort ein weiteres Verzeichnis anlegen.
Ich komme auf den anderen Server:
ssh root@server_1;
was aber nicht funktioniert ist (im ersten Schritt):
cd /home/verzeichnis_1;
danach käme "mkdir verzeichnis_2"
das ist für mich "Neuland".
Vielen Dank schon mal für jegliche Hilfe
Carpy
5 Antworten
Das geht auch nicht, da Dein Skript lokal ausgeführt wird und nicht auf dem entfernten Rechner. Der Vorschlag von Lamanini ist der richtige Ansatz!
Du kannst die entfernten Aktionen dem Befehl zum Einloggen mitgeben, z.B.
ssh entfernter_rechner "mkdir /home/du/verzeichnis"
mehrere Befehle nacheinander kannst du mit ";" voneinander trennen.
Es scheint, als ob verzeichnis_1 schon bestand, denn er wollte ja direkt dort hinein wechseln.
Du musst bei home in das Verzeichnis des Benutzers mit dem du dich auf dem 2ten Server Eingeloggt hast Bewegen, nicht ins home alleine . Dazu hast du als angemeldeter Benutzer keine Rechte.
Home liegen alle Benutzer ab die auf dem Server X Angelegt wurden.
Root hat ein eigenes.
Da du nur ein Log in mit ssh machst ,hast du also nur das Recht auf dem Server dich anzumelden
ssh@ip
Besser wäre es :
user@ip user:passwort
oder
ssh $user@$IP "$command"
Dazu dann im Nachinein auch das Passwort dazu festlegen womit du dich mittels script anmeldest.
Gilt auch wenn du dich mit root am Server anmeldest. Ohne Passwort keine Chance.
Man kann auch Befehle nacheinander ausführen lassen.
ssh user@host 'befehl1 && befehl2 && befehl3 ...'
Passwortangabe nicht vergessen.
Fakt ist :
ssh username@IP-Adresse
Wäre der korrekte Log in von SSH Client zu SSH Server.
Danach erscheint Passwort Abfrage.
Dies musst auch in deinem Script so Berücksichtigen
Wenn alle Stricke reißen und man nicht klarkommt --> PUTTY
Dein Script führt die Programme nacheinander aus, dh. es führt erst ssh aus und sobald ssh beendet ist dann den nächsten Schritt.
Die nachfolgenden Befehle werden nicht in SSH ausgeführt.
Die Antwort von Lamanini ist richtig, damit kannst du Befehle über SSH an die bash shell auf dem Server senden. Alternativ kannst du über scp das Script auf dem Server kopieren und über ssh auf dem Server ausführen.
Wenn du viele Scripte schreiben möchtest um deine Server zu verwalten würde ich dir so etwas wie Ansible empfehlen, damit schreibst du auch eine art Script welches Ansible dann z.B. über SSH auf dem Server den du konfigurieren möchtest ausführt.
Ich würde lieber ein script schreiben, welches du dann per Befehl auf dem Remote-Server ausführen kannst.
Das geht dann so:
ssh root@MachineB 'bash -s' < local_script.sh
https://stackoverflow.com/questions/305035/how-to-use-ssh-to-run-a-local-shell-script-on-a-remote-machine
oder in seinem Fall, mit dem Parameter "-p" um "Parent-" also übergeordnete Ordner zu erstellen: