I'm working on a scrip which idea is to create threads and simultaniously go thoughout a list of machines and check for things. It appears that when a thread goes into it's seperate termintal using "ssh ......" it gets stuck and I can't kill it. They also have a timer which doesn't seem to be working.
Here is the code:sub call_cmd{ my $host = shift; my $cmd = shift; my $command = $cmd; my $message; open( DIR, "$cmd|" ) || die "No cmd: $cmd $!"; while(<DIR>){ $message.=$_; print "\n $host $message \n"; close DIR; } print "I'm here"; }
I get the output message which the ssh returns but i never get to the next print. This is the code for creating the threads.
Thanks for the help.foreach(@machines){ my $_ = threads->create(thread_creation,$_); $SIG{ALRM} = sub { $_->kill('ALRM') }; push(@threads,$_); } sub thread_creation(){ my $host = $_; eval{ $SIG{ALRM} = sub { die; }; alarm(5); ssh_con($host,"pblue"); alarm(0); } }
In reply to Threads getting stuck in ssh connection by Wald
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |