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)
Antworten:
Ja, Bildschirm ist nicht der Weg. Ich weiß ja nicht ,
cache
aber 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 seinEin anderer Ansatz wäre der,
expect
der 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 Fallexpect
können Sie Befehle senden und auf die Ausgabe reagieren, indem Sie nicht interaktiv mit einer interaktiven Shell interagieren.quelle