Bonjour,

je cherche à tester des ouvertures de ports sur des équipements via la commande UNIX/LINUX "nc"'.
Je ne peux pas installer le module NET:ING.

Le but est de lancer la commande avec des options dont des arruments qui sont des adresses IP venant d'un fichier tout en récupérant le résultant dans des scalar via la commande "qx" pour être traités par la suite.
Les commandes se lancent. Le résultat s'affiche à l'écran mais je n'ai rien qui s'affiche dans la scalar $NC.
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
 
use strict;
use warnings;
use Data::Dumper;
use feature 'say';
no warnings 'uninitialized';
 
my @all;
 
open (my $SOURCE, "<", "$ARGV[0]") or die "Can't open < input.txt: $!";
 
while (<$SOURCE>) {
	chomp;
	push @all, split (/\n/, $_);
	}
 
foreach my $IP (@all) {
	my $NC = qx(nc -vz $IP 22-23);
	print Dumper $NC;
}
Résultat:
$ perl test.pl source.txt
nc: connect to 127.0.0.1 port 22 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 23 (tcp) failed: Connection refused
$VAR1 = '';
nc: connect to 8.8.8.8 port 22 (tcp) failed: Connection timed out
nc: connect to 8.8.8.8 port 23 (tcp) failed: Connection timed out
$VAR1 = '';
Connection to 6.91.128.139 22 port [tcp/ssh] succeeded!
nc: connect to 6.91.128.139 port 23 (tcp) failed: Connection timed out
$VAR1 = '';

A première vu en regardant d'autres exemples, je devrais bien récupérer une valeur dans $NC.

Serait la boucle qui pose un problème ?

Si vous avez une idée