Skript über SSH anzeigen?

8

Ein Freund, der einen Remotecomputer verwendet, hat eine SSH-Verbindung zu meinem Computer hergestellt und das folgende Python-Skript ausgeführt:


während (1):

.... drucke "Hallo Welt"


(Dieses Skript druckt einfach "Hallo Welt" fortlaufend).

Ich bin jetzt an meinem Computer angemeldet. Wie kann ich die Ausgabe des Skripts sehen, das mein Freund ausgeführt hat?


Wenn es hilft, kann ich das Skript, das mein Freund verwendet, "erkennen":

me @ home: ~ $ ps aux | grep justprint.py

Freund 7494 12,8 0,3 7260 3300? Ss 17:24 0:06 python TEST_AREA / justprint.py

Freund 7640 0.0 0.0 3320 800 Punkte / 3 S + 17:25 0:00 grep --color = auto just


Welche Schritte muss ich unternehmen, um die "Hallo Welt" -Nachrichten auf meinem Bildschirm anzuzeigen?

user3077
quelle

Antworten:

9

Im Allgemeinen können Sie die Ausgabe des Programms einer anderen Person nicht sehen. Sehen Sie in dieser Spalte nach, wo Ihr grep-Befehl auf tty ausgeführt pts/3wird und der Ihres Freundes ?, was bedeutet, dass er vom Terminal getrennt ist.

Sie können sehen, wohin die Ausgabe geht ls -l /proc/7494/fd/(wobei 7494 die Prozess-ID des Prozesses Ihres Freundes ist). Wenn Sie jedoch nicht als Root ausgeführt werden, können Sie aus Sicherheitsgründen wahrscheinlich nicht einmal nachsehen. (Also versuch es sudo ls -l /proc/7494/fd/.)

Es gibt schreckliche, schreckliche, klobige Dinge, die Sie möglicherweise tun können, um zu ändern, wohin die Ausgabe des Programms geht. Aber im Allgemeinen können und sollten Sie nicht.

Wenn Ihr Freund die Ausgabe mit Ihnen teilen möchte, besteht der Ansatz darin, die Ausgabe des Programms in eine Datei umzuleiten und diese Datei dann für Sie lesbar zu machen:

$ python -u TEST_AREA/justprint.py > /tmp/justprint.out &
$ chmod a+r /tmp/justprint.out

(Wo in diesem Fall "für Sie lesbar" "für alle lesbar" ist; mit etwas mehr Arbeit können Sie eine gemeinsame Gruppe einrichten, damit nur Sie beide die Ausgabe austauschen können.)

(Und beachten Sie, dass Python-Puffer standardmäßig ausgegeben werden - das Deaktivieren ist das, wofür das gedacht -uist.)

mattdm
quelle
4

Wenn Sie Root-Zugriff auf dem Computer haben und Ihr Freund bereit ist, einige Befehle auszuführen, ist Folgendes möglich:

  1. [Root] screenmuss setuid root sein :chmod u+s /usr/bin/screen
  2. [Freund] startet screen, er kann der Sitzung einen Namen geben, macht es einfacher: screen -S "shared_session"
  3. [Freund] aktiviert den Mehrbenutzermodus: Ctrl-a :multiuser on
  4. Mit [Freund] können Sie auf seine Bildschirmsitzung zugreifen: Ctrl-a :acladd you
  5. [Freund] (Optional) beschränkt Ihren Zugriff auf schreibgeschützt: Ctrl-a :aclchg you -w "#"
  6. [Sie] an den Bildschirm Ihres Freundes anhängen: screen -x friend/shared_session

Die Setuid-Wurzel ist vielleicht ein bisschen gefährlich ...

wedeln
quelle
muss es sein suid?
Xenoterracide
Wenn nicht, wird der Bildschirm beendet mit: Must run suid root for multiuser support.
wag
1
Die Verwendung von screen wurde auch am Kreuzpfosten dieser Frage für stackoverflow vorgeschlagen: stackoverflow.com/questions/4425308/view-script-over-ssh/… Beachten Sie, dass screen -t ohne setuid root set einwandfrei funktioniert .
Kasterma
@kasterma: Ich bin ein bisschen skeptisch, ob Benutzer A tatsächlich screenohne Suid / Root-Rechte an Benutzer B anhängen kann. Können Sie das weiter erklären?
wag
@wag du hast recht; Alles außer Schritt 6 funktioniert ohne, und das ist der Schritt, den ich nicht getestet habe (aber eindeutig haben sollte). (Es wäre vielleicht schön gewesen, wenn Schritt 4 eine Warnung dazu gegeben hätte)
Kasterma