Frage

Ist es möglich, ein Perl-Skript ausführen shell-Aliase?Ich bin, läuft in einer situation, wo wir haben ein Perl-Modul, ich habe keinen Zugriff zu ändern, und eines der Dinge, die es tut, ist, die Protokolle in mehreren Servern über SSH ausführen einiger Befehle aus der Ferne.Leider sind einige der Systeme (die ich auch nicht ändern) haben Sie einen buggy SSH-server trennen, sobald mein system versucht zu senden eine SSH-public-key.Ich habe den SSH-agent ausgeführt wird, weil ich es brauche, um eine Verbindung zu einigen anderen Webservern.

Meine erste Lösung war die Einrichtung eines alias zu setzen, ssh, ssh -o PubkeyAuthentication=no, aber Perl läuft der ssh-Binärdatei, die es findet, in den WEG, anstatt zu versuchen, den alias verwenden.

Es sieht aus wie die einzigen Lösungen sind, deaktivieren Sie den SSH-agent, während ich mich anschließen, um das problem Servern oder überschreiben Sie die Perl-Modul, das die eigentliche Verbindung.

War es hilfreich?

Lösung

Ändern die WEG Sie vor der Ausführung des perl-Skripts, oder verwenden Sie diese in Ihrem .ssh/config

Host *
  PubkeyAuthentication no

Andere Tipps

Vielleicht könnte man einen Befehl namens ssh in PATH vor dem ssh was läuft ssh wie Sie wollen es zu laufen.

Warum nicht überspringen Sie den alias, und erstellen Sie einfach ein shell-Skript namens ssh in einem Verzeichnis irgendwo, dann ändern Sie den Pfad zum Verzeichnis, bevor Sie mit der realen ssh?

Ich hatte dies vor kurzem mit iostat da die neue version die Ausgabe ein anderes format, eine Dritte-Partei Produkt, nicht bewältigen konnte (es gescannte Ausgabe einen Bericht generieren).

Ich schuf eine iostat shell-Skript, das als echte iostat (mit hartcodierten Pfad, aber Sie könnte anspruchsvoller werden), übergeben Sie die Ausgabe durch eine awk Skript zu massieren, Sie in das ursprüngliche format.Dann habe ich den Pfad geändert, für das Dritte Programm und es begann gut.

Könnten Sie deklarieren eine Funktion in .bashrc (oder .Profil oder was auch immer) mit diesem Namen.Es könnte so Aussehen (kann brechen):

function ssh {
  /usr/bin/ssh -o PubkeyAuthentication=no "$@"
}

Aber die Verwendung einer config-Datei ist möglicherweise die beste Lösung in Ihrem Fall.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top