Thread Net::OpenSSH Verbindungsprobleme (4 answers)
Opened by ryder at 2015-05-05 09:25

ryder
 2015-05-05 09:25
#180940 #180940
User since
2013-10-09
5 Artikel
BenutzerIn
[default_avatar]
Hallo Gemeinde,

ich versuche mich per Net::Openssh zu eine Network-Appliance zu verbinden und verschiedene Commandos auszuführen.
Ich habe den Fehler auch schon eingegrenzt. Es hängt mit dem Commando zusammen, welches ich ausführen möchte. Leider ist die ein properitäres Commando und nicht ein allgemeines Unix Commando. Die Appliance arbeitet mit einem hersteller-angepassten Linux. Letztendlich wird jedoch der Openssh-Daemon verwendet.
Normale Kommandos wie ls /tmp oder cat /etc/hosts funktionieren.

Das Commando sollte folgenden Output liefern: (1.6kb):

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[Expert@mytest_gw:0]# dbedit --h
Usage: dbedit [-local] | [-s server] [-c certificate file | -u user] [-p password] [-f filename] [-r db-open-reason] [-help] [–ignore_script_failure] [-continue_updating]

Commands:

create <object_type> <object_name>
modify <table_name> <object_name> <field_name> <value>
rename <table_name> <object_name> <new_object_name>
update <table_name> <object_name>
update_all
delete <table_name> <object_name>
print <table_name> <object_name>
printxml <table_name> <object_name>
whereused <table_name> <object_name>
addelement <table_name> <object_name> <field_name> <value>
rmelement <table_name> <object_name> <field_name> <value>
rmbyindex <table_name> <object_name> <field_name> <index_number>
add_owned_remove_name <table_name> <object_name> <field_name> <value>
is_delete_allowed <table_name> <object_name>
set_pass <user> <password>
quit [-update_all|-noupdate]



Hier mein Testprogramm (1.4kb):

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl
use Net::OpenSSH;
my $host = "10.100.110.51";
my $user = "admin";
my $pass = "my_pw";

#$Net::OpenSSH::debug=-1;

my $ssh = Net::OpenSSH->new(host=>$host,
user=>$user,
password=>$pass,
master_opts => [-v, -o => "StrictHostKeyChecking=no"],
);
$ssh->error and die "Couldn't establish SSH connection: ". $ssh->error;

my $xxx = "source /opt/CPshrd-R77/tmp/.CPprofile.sh ; /opt/CPsuite-R77/fw1/bin/dbedit --h";

#my (@ls,$errput) = $ssh->capture2({tty => 1},"/opt/CPsuite-R77/fw1/bin/dbedit --h");
my (@ls,$errput) = $ssh->capture2({tty => 1},$xxx);
$ssh->error and
die "remote ls command failed: " . $ssh->error;
print"LS:@ls\n";
print"ERR:$errput\n";



Wie man am Code sehen kann, aber ich schon einige Sachen probiert. Damit das Commando dbedit funktioniert, muss eine Art bash.rc "gesource" werden. Eigenlich wird das schon automatisch gemacht, wenn sich der User admin einloggt. Trotzdem bekomme ich die Fehlermeldung das eine Library nicht gefunden wird, wenn ich nicht im Script diese bash.rc noch mal vorher lade.
Ich habe auch schon das $ssh->capture versucht und mit tty und stdout optionen experimentiert. Interessant ist, dass beim Debug die Antwort vom Server korrekt erzeugt wird, aber irgendwie nicht in den Tunnel zurück zum Client finden. Für den Debug Output, siehe Attachment.

Wer kann helfen? Ich suche einen Weg um diese Commando dbedit automatisiert steuern zu können. Letztendlich kann ich über eine Command-Datei Optionen an dbedit senden und dann möchte ich den Output "auffangen" und weiter verarbeiten.

ciao
ryder
Anhänge
text/plain
166 lines
test_debug.txt

View full thread Net::OpenSSH Verbindungsprobleme