Page 1 of 1

sudo & sh auf entfernten Rechnern

Posted: 23. Aug 2005 8:16
by micbur
Hallo,

so leicht wie ich dachte, ist es doch nicht.

Ich habe zwei Maschinen. Und ich möchte auf der einen Maschine ein Skript schreiben, dass auf einer anderen Maschine andere Skripte ausführt. Und damit es so richtig kompliziert wird, soll das Ganze zum Schluss in ein PHP-Skript eingebunden werden.

Aber zunächst teste ich alles in der Shell des ersten Rechners.
Ich dachte, ich könnte entfernte Skripte dadurch starten, dass ich einfach

Code: Select all

sudo -u root sh 192.168.0.3:/path/to/script.sh
ausführe und dann läuft es. Leider bekomme ich die Fehlermeldung: No such file or directory.

Ich habe schon geschaut, aber sowohl sh, als auch sudo sind auf beiden Systemen vorhanden und der Pfad zum Skript stimmt auch.
Da bleibt nur noch ein Fehler in meiner Syntax, die aber laut man-pages korrekt ist bzw. ich glaube, dass sie korrekt ist.

Wie würdet ihr das machen?
Ein Skript auf einem Rechner, soll ein Skript auf einem anderen Rechner starten.

Ciao, micbur

Posted: 23. Aug 2005 20:32
by klopskuchen
sudo -u root sh 192.168.0.3:/path/to/script.sh
Du meinst rsh?

Posted: 24. Aug 2005 8:45
by micbur
Ja, also ... so richtig weiß ich nicht, was ich meine. Ich weiß nur, was ich will.
Ich werde es mal probieren.

Ich möchte vom Webserverein Skript starten, dass ein Skript auf dem Datenbankserver startet. Das Skript auf dem Datenbankserver führt dann ein tolles rsync aus.

Das Ganze soll dann ohne erneute Eingaben vom Benutzer funktionieren. Also habe ich auf den beiden Servern schon RSA-Schlüssel getauscht. Ziel ist es, auf dem Webserver ein PHP-Skript laufen zu lassen, dass vom Benutzer gestartet wird.

Mir fielen darauf hin zwei Wege ein, ein Mal mittels ssh und ein Mal mittels sudo.

Ciao, micbur

Posted: 24. Aug 2005 20:51
by klopskuchen
Bei dem rsh läuft ein Dämon auf einem Server der Shellbefehle von Clienten verarbeitet. Den Ablauf kann man sich ähnlich wie bei telnet vorstellen. War aber wohl nicht ganz das was du suchst.

Mit der Funktion exec kannst du aus php heraus shell-Befehle absetzen. Mit den Rechten des scripts!

Code: Select all

<HTML>
<HEAD><TITLE>micburs remote-webshell</TITLE></HEAD>
<BODY>

<?php
  $list = exec &#40;'ls -l'&#41;;
  echo "$list";
?>

</BODY>
</HTML>
MfG, Klopskuchen

Posted: 24. Aug 2005 21:29
by kanonenfutter
> Mir fielen darauf hin zwei Wege ein, ein Mal mittels ssh und ein Mal mittels sudo.

und wieso machst du es dann nicht, nämlich ssh nehmen?
ssh -i identity_file XXXX -l root $hostname $command

Posted: 25. Aug 2005 8:19
by micbur
kanonenfutter wrote:> Mir fielen darauf hin zwei Wege ein, ein Mal mittels ssh und ein Mal mittels sudo.

und wieso machst du es dann nicht, nämlich ssh nehmen?
ssh -i identity_file XXXX -l root $hostname $command
Guten Morgen,

Weil bei einem musste ich noch ein Passwort eingeben und Dialoge kann man mit PHP schlecht beantworten.
Und irgendwie hatte das Andere auch nicht funktioniert. Ich weiß jetzt auch nicht mehr warum, aber jedenfalls war die Ausgabe nicht wie gewünscht und gemacht wurde auch nichts. Returncode war -1.

Um genau zu sein, gibt es drei Möglichkeiten in PHP etwas per Shell auszuführen:
- exec
- shell_exec
- system

Funktionieren alle ähnlich. Da ich ein rsync ausführen möchte, hatte ich mich für eine Variante entschieden, bei der ich die Ausgabe des Programms zurückbekomme.

Habt ihr das mal ausprobiert?
Ich meine, ich habe ja nun zwei Tage - immer mal wieder, wenn mir was eingefallen ist - rumprobiert und da habe ich es nicht hinbekommen, zumindest nicht so wie ich es haben wollte.

Aber vielen Dank. Ich werde es probieren.

Ciao, micbur