Schrift
[thread]12723[/thread]

SSH

Leser: 3


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
bieber
 2008-11-05 13:36
#115990 #115990
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
ich will per SSH Befehle auf einem anderen Server im Netzwerk ausführen...

ich habe mir hierfür Net::SSH gegriffen, weil Net::SSH::Perl zu viele andere Module braucht
funktioniert auch alles, so lange ich Standard-Befehle nutze, z.B. "ls", ich muss aber einen spezifischen Befehl ausführen der nur auf dem anderen System existiert, da bekomme ich aber immer die Meldung "command not found"

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl

use strict;
use warnings;

use Net::SSH qw(ssh ssh_cmd issh sshopen2);

my $command="special_command";

my $re = ssh_cmd('user@server', $command);

print $re;


wenn ich mich auf der Konsole per SSH verbinde mittels "ssh user@server" und anschließend "special_command" aufrufe funktioniert alles,
ich glaube mir fehlt hier irgendwie Grundverständnis :( wäre schön wenn mir jm. weiterhelfen könnte
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
pq
 2008-11-05 14:26
#115993 #115993
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
funktioniert hier wunderbar mit einem programm, das nur auf dem zielhost existiert.
was sagt denn ssh auf der kommandozeile?
Code: (dl )
$ ssh user@server special_command
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
bieber
 2008-11-05 14:37
#115995 #115995
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
sagt genau das gleiche, ich habe es jetzt mal mit "ll" gemacht, das ist eigentlich auf beiden Systemen möglich, sowohl ssh-client als auch ssh-server, nur wenn ich es über Net::SSH oder eben direkt im Befehl aufrufe gehts nicht

direkt auf konsole
Code: (dl )
1
2
pcxxx:/home/asth # ssh user@server ll
bash: line 1: ll: command not found


über perl
Code: (dl )
1
2
pcxxx:/home/asth # perl test.pl
bash: line 1: ll: command not found


es sind übrigens beides Suse Enterprise-Server falls das wichtig ist

der Vollständigkeit halber noch der Weg der Funktioniert:
Code: (dl )
1
2
3
4
5
6
pcxxx:/home/asth # ssh user@server
Last login: Mon Dec 1 03:27:09 2008 from pcxxx
user@server:~> ll
total 0
drwxr-xr-x 2 user user 48 2007-09-12 12:39 bin
....
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
pq
 2008-11-05 14:43
#115997 #115997
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
achso, es handelt sich um ein alias und kein programm. das ist was anderes. die .bashrc wird
so nicht ausgeführt.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
bieber
 2008-11-05 14:51
#115998 #115998
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
stimmt... *kopf mal wieder gegen die Tastatur knallen*
bekommt man das mit dem alias irgendwie hin? ich könnte es zwar über einen Pfad direkt aufrufen... dann bekomme ich aber Probleme, wenn es mal auf einen anderen Server gemacht werden muss... der alias ist immer gleich, der Pfad glaube ich nicht (muss ich nochmal den Chef fragen)

schonmal danke für die Hilfe
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
LanX-
 2008-11-05 15:00
#115999 #115999
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
naja du musst halt den gleichen Pfad nehmen wie in dem alias.

ich kann mir nicht vorstellen dass ihr auf jedem rechner ein individuell anderes alias hast, falls doch (stirnrunzel) bleibt dir nur übrig dein .bashrc zu parsen.

Oder du passt deine .bashrcs dahingehend an den Alias-Pfad in ENV zu exportieren, aber dafür müssen schon pathologische Gründe vorliegen.

Ein IMHO klügeres Konzept wäre statt aliases personalisierte symlinks für Pfade zu nutzen.
bieber
 2008-11-05 15:15
#116001 #116001
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
LanX-+2008-11-05 14:00:38--
ich kann mir nicht vorstellen dass ihr auf jedem rechner ein individuell anderes alias hast, falls doch (stirnrunzel) bleibt dir nur übrig dein .bashrc zu parsen.


ich hatte an anderer Stelle das Problem, das Pfade auf dem einem Server anders waren als auf dem anderen...
auf Anfrage warum das so ist, kam dann "das hat historische Gründe", ich wusste nicht ob ich weinen oder lachen sollte

wie gesagt, ich muss hier mal fragen/testen ob alles gleich ist...
was meinst du mit ".bashrc parsen "? kenne mich leider nicht aus in den tiefen von Betriebssystemen
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
murphy
 2008-11-05 17:40
#116014 #116014
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Man kann ja zur Not auch sowas wie ssh target-host /usr/bin/bash -lc strange_alias_command ausführen.
When C++ is your hammer, every problem looks like your thumb.
Gast Gast
 2008-11-05 18:41
#116024 #116024
Warum so kompliziert? Es existiert doch eine Shell, die die ".bashrc" ausführen kann.
Code: (dl )
"(. ~/.basrc && strange_alias_command)"

Also Subshell auf machen, in ihr die ".bashrc" im selben Kontext ausführen "." und danach das alias.
murphy
 2008-11-05 19:23
#116025 #116025
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
@Gast: Ich würde meine Lösung bevorzeugen, sofern ich nicht genau weiß ob der Alias in einer .bashrc, einer .profile, einer .bash_profile, einer ./etc/profile oder an sonst irgendeinem komischen Ort definiert wird.

Als fauler Programmierer lasse ich lieber die Shell selbst alle ihre Standardinitialisierungsdateien laden, anstatt das manuell mittels source zu erledigen.
When C++ is your hammer, every problem looks like your thumb.
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2008-11-05 13:36.