Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PERL: Subroutine auf entferntem Server

Empfohlene Antworten

Hallo Community.

Ich habe mal wieder ein kleines Problem an dem ich nicht weiterkomme.

Und zwar hab ich jetzt ein Programm geschrieben, mit verschiedenen Subroutinen, die alle lokal ausgeführt werden können.

Das ganze schaut dann in etwa so aus:


#!/usr/bin/perl

if ($ARGV[0] eq "intern") { pfad() }

elsif ($ARGV[0] eq "extern") {

   qx(rsh server10 -l toor "    ???    ");

}


sub pfad {

   qx(echo $PATH);

}

Wie mache ich das jetzt, dass ich die Routine auf dem entfernten Rechner ausführe, ohne eine neue Perl-Datei in einem Verzeichnis auf dem Server anzulegen, welche diese Routine beinhaltet??

Kann ich diese Routine irgendwie mitgeben?

Vielen Dank im Vorraus && Gruß

starbuck11

Wie mache ich das jetzt, dass ich die Routine auf dem entfernten Rechner ausführe, ohne eine neue Perl-Datei in einem Verzeichnis auf dem Server anzulegen, welche diese Routine beinhaltet??

Am besten nicht per rsh, denn dort werden die Daten unverschluesselt uebertragen. Schau dir besser mal Net::SSH an. Wenn du dir per ssh-keygen einen Schluessel erstellst und ihn nach .ssh/authorized_keys auf den entfernten Rechner laedst, kannst du dich verschluesselt ohne Passwort dort anmelden. Per Net::SSH kannst du dann problemlos Befehle absetzen.

Da es dir anscheinend nur darum geht, den Pfad auszugeben, brauchst du zumindest lokal nicht noch extra einen Systemaufruf. Du hast auf den Pfad Zugriff ueber $ENV{PATH} (falls es sich um eine Shell handelt, die diese Variable verwendet).

Per Net::SSH koenntest du '/usr/bin/env' aufrufen lassen um dir die gesamte Umgebung zu bekommen.

Das Problem ist, dass die "Net::"-Module nicht installiert sind und ich keine Root-Rechte für die Server habe, ergo die Module nicht installieren kann SSH/Telnet. Die Verschlüsselung spielt in meinem Fall nur eine sekundäre Rolle.

By the way... würde ich nicht wieder vor dem selben Problem stehen, wenn ich eine Secure-SHELL aufmache, dass ich die Routine nicht entfernt ausführen kann?! (Secure-Shell ist ja nur eine alternative zur Remote-SHELL)

Für das Skript geht es mir nicht nur um den Pfad, sondern um eine Routine, die etwa 100 Zeilen lang ist. Ich wollte das ganze nur etwas abkürzen.

Das Problem ist, dass die "Net::"-Module nicht installiert sind und ich keine Root-Rechte für die Server habe, ergo die Module nicht installieren kann SSH/Telnet.

Kein Hindernis fuer Perl - Installing Perl Modules as a Non-Root User LG #139

Die Verschlüsselung spielt in meinem Fall nur eine sekundäre Rolle.

Wenn jemand boese ist und ein Gateway auf Level 7 mitloggt, hat der uebelwollende Mensch Zugriff auf das System. Willst du das wirklich? :eek

Für das Skript geht es mir nicht nur um den Pfad, sondern um eine Routine, die etwa 100 Zeilen lang ist. Ich wollte das ganze nur etwas abkürzen.

Wenn es dir nicht nur um den Pfad geht, dann verwende IPC::PerlSSH (auch wenn ich von solchen Methoden abraten wuerde). Dafuer wirst du allerdings zumindest Perl auf der entfernten Maschine brauchen. Das Grundprinzip sieht etwa so aus:

echo dein-routinen-quellcode | ssh user@host 'perl -e'

Unix

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.