Bonjour,
j'ai une application qui a besoin du module Net::Telnet; je bosse sous linux ubuntu lucid. L'établissement de la connexion tcp a l'air de se faire convenablement, mais je n'ai pas la connexion telnet complète.
Voici mon code et ce qui se passe :
Et ce que ca donne est ce qui suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 #!/usr/bin/perl -w # ./S.pl # use strict; use warnings; use Socket; use Net::Telnet; print"\nOk, hello S.pl \!\n"; # my $vhost='aa.b.ccc.ddd'; my $DEBUG=1; my($port, $proto, $sin); my $ip = 0; my $timeout = 10; my $MAX_SOCKET_TIME = 20; my $MAX_CONNECT_TIME = 30; my $t; my $prompt='/.*[\$#:>\]\%] *$/'; my $user='eeeee'; my $pass='ffff'; # local $SIG{'ALRM'} = sub { exit(0); }; alarm $MAX_SOCKET_TIME; # $ip=inet_aton($vhost); print "echo ici Z; \$ip=inet_aton(\$vhost)=$ip\n" if($DEBUG); if(!$ip) { print "Could not find host\n" if($DEBUG); exit(0); } else { my $ip_ascii=inet_ntoa($ip); print "echo ici 0; \$ip_ascii=inet_ntoa(\$ip)=$ip_ascii\n" if($DEBUG); } # $proto = getprotobyname('tcp'); print "echo ici 1; \$proto=$proto\n" if($DEBUG); socket(SOCK, PF_INET, SOCK_STREAM, $proto); # $port = 23; print "echo ici 2; \$port=$port\n" if($DEBUG); # $sin = sockaddr_in($port, inet_aton($vhost)); print "echo ici 3; \$sin=$sin\n" if($DEBUG); # alarm $MAX_CONNECT_TIME; if(!connect(SOCK, $sin)) { print "echo ici 4; exit(0) sans connection.\n" if($DEBUG); exit(0); } # my $iaddr = (unpack_sockaddr_in(getpeername(SOCK)))[1]; close(SOCK); # alarm 0; $vhost = gethostbyaddr($iaddr, AF_INET); print "echo ici 5; \$vhost=$vhost\n" if($DEBUG); my $peer_addr=inet_ntoa($iaddr); print "echo ici 6; \$peer_addr=$peer_addr\n" if($DEBUG); # $t = new Net::Telnet (Timeout => $timeout, Prompt => $prompt, Errmode => sub { return; }); # if(!$t) { print "ACCESS DENIED!\n"; exit(0); } # $t->open($vhost); $t->login(Name => $user, Password => $pass); my (@data) = $t->get(); print "echo ici 7; \$data[1]=\"$data[1]\"\n" if($DEBUG); if(exists($data[1])) { print "echo ici 8; \@data=\"@data\"\n" if($DEBUG); print "End of data.\n"; exit(0); } #
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 david@test:~/HHH/PERL$ ./S.pl Ok, hello S.pl ! [quote]echo ici Z; $ip=inet_aton($vhost)=Y×w echo ici 0; $ip_ascii=inet_ntoa($ip)=aa.b.ccc.ddd echo ici 1; $proto=6 echo ici 2; $port=23 echo ici 3; $sin=Y×w echo ici 5; $vhost=ip-ddd.net-aa-b-ccc.rev.numericable.fr echo ici 6; $peer_addr=aa.b.ccc.ddd Use of uninitialized value $data[1] in concatenation (.) or string at ./S.pl line 73. echo ici 7; $data[1]="" david@test:~/HHH/PERL$
Quelqu'un peut il me dire comment inspecter le deroulement de ma connexion, et comment faire pour qu'elle aboutisse. J'ai cherche dans le forum les messages parlant de Net::Telnet, mais hormis un qui m'a aide pour $prompt='/.*[\$#:>\]\%] /' dont je ne suis toujours pas sur pour autant, tous (les messages du forum qui parlent de Net::Telnet) sont bien plus compliques que mon probleme de debutant, et je ne sais roujours pas faire aboutir totalement la connexion.
Merci de m'y aider ou de me donner des directions de recherche,
David
Partager