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

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.
  • Comment on Re^2: 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^3: 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 13:11 UTC

    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.

Re^3: 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 13:50 UTC

    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.