Interagieren Sie mit der Remote-Shell aus dem Hintergrundskript über SSH

0

Ich muss Folgendes mit einem Skript emulieren, das von einem Webdienst aufgerufen wird, der von einem Linux-Server ausgeführt wird:

  • Greifen Sie über SSH auf den Remote-AIX-Server zu
  • Melden Sie sich bei einer Intersystems Cache-Instanz an (wenn dies nicht bekannt ist, tun Sie so, als würden Sie eine interaktive Python- oder Ruby [irb] -Umgebung laden).
  • Befehle ausführen
  • Führen Sie abhängig von der Ausgabe der vorherigen Befehle weitere Befehle aus
  • Alle Ein- und Ausgaben in dieser Umgebung protokollieren

Dies ist in C # mit der SSH.NET-Bibliothek ziemlich trivial. Öffnen Sie einen Shellstream für den Remote-Host, fügen Sie einen StreamReader und StreamWriter hinzu, senden Sie dann eine Eingabe über StreamWriter an die SSH-Verbindung und lesen Sie die Ausgabe über StreamReader aus.

Wie soll ich das auf einem Linux-Server mit ssh machen? Ich experimentiere mit dem Bildschirm, aber er scheint eher für die interaktive Verwendung durch Menschen als für Skripte konzipiert zu sein, und ich frage mich, ob ich den falschen Baum bellte.

Ich habe keine Kontrolle darüber, was auf dem AIX-Server installiert ist. Möglicherweise kann ich dort Dinge installieren lassen, aber es gibt keine Garantien.

Viel später bearbeiten: Mögliche Lösungen sind pexpect / pxssh (Python), paramiko (auch Python)

wilee
quelle
2
Hast du erwartet oder erwartet (Python)?
Chaput
1
Während diese Frage perfekt zum Thema passt und gerne hier bleibt, gibt es auf unserer Schwestersite Unix & Linux noch viel mehr Unix-Benutzer . Wenn Sie hier nach einer Weile keine nützliche Antwort erhalten, sollten Sie dies als Moderator markieren und sie bitten, es erneut zu migrieren.
Terdon

Antworten:

0

Ja, Bildschirm ist nicht der Weg. Ich weiß ja nicht , cacheaber können Sie ein Skript für sie schreiben oder haben Sie benötigen die interaktive Shell? Wenn Sie ein Skript schreiben und auf dem AIX-Computer speichern können, sollten Sie dazu in der Lage sein

ssh [email protected] /path/to/cache_script

Ein anderer Ansatz wäre der, expectder auch unter AIX verfügbar ist, aber ich kann Ihnen keine weiteren Details geben, ohne die Befehle zu kennen, die Sie ausführen müssen. In jedem Fall expectkönnen Sie Befehle senden und auf die Ausgabe reagieren, indem Sie nicht interaktiv mit einer interaktiven Shell interagieren.

terdon
quelle
pexpect und pxssh sehen so aus, als wären sie magisch und testen sie gut. Auf dem Remote-Host muss nichts ausgeführt werden (auch nicht erwartet). Danke für die Antworten beider Leute.
wilee