in reply to How to automate login to different servers via ssh and check is some specific processes are running or not.

To clarify, do you want to know how to log on to remote servers to execute the code that you have posted?

  • Comment on Re: How to automate login to different servers via ssh and check is some specific processes are running or not.

Replies are listed 'Best First'.
Re^2: How to automate login to different servers via ssh and check is some specific processes are running or not.
by Anonymous Monk on Dec 12, 2014 at 12:56 UTC
    Thanks for the reply, for executing command on remote host we can use ssh user@server path/script or unix command,but i don't want to type a command each time. For verifying diff processes on diff servers, i just wanted to write a script to do that. For ex: if in server1 i need to check 10 processes and in server 2 i need to check for 20 processes and for server 3, for this i wanted to include whole thing in a script to do this.

      To avoid supplying ssh password, use a ssh key with a key-agent. Also, do a search around these parts related to logging on to a ssh host & running commands.

      Use some kind of configuration -- hash, external files, __DATA__, etc -- to associate processes to a server ...

      # Untested, incomplete code. my %map = ( 'host-p' => [qw[ cron apache ]] , 'host-q' => [qw[ ntpd ]] ); for my $host ( sort keys %map ) { # Log on $host at this point. # Check processes. foreach my $proc ( @{ $map{ $host } } ) { printf qq[%s: %3s running] , $proc , check_proc( $proc ) ? '' : 'not' ; } # Log off. } sub check_proc { my ( $proc ) = @_; my $ps = make_ps( $proc ); my $res = qx[ $ps ]; # Check $? for cause of failure if you care. return defined $res && $res =~ m{ \b psname = $proc \b }x; } sub make_ps { return sprintf q[ps -ef | grep psname=%s] , $_[0] ; }

      Your process checking looks too complicated; there might be OS specific commands/options that won't require filtering of ps run itself. Perhaps some native Perl module may be in existence for the purpose.