perl ssh到远程服务器,启动服务并捕获pid

时间:2014-12-02 18:45:47

标签: perl ssh

标题:perl ssh到远程服务器,启动服务并捕获pid

1 - 请告诉我,如果我不清楚,或者我是否因为我提出问题而感到沮丧 - 我不想咬我的手!

2原始文件长180行,但这里是要点:

#!/usr/bin/perl -w
use strict;
use warnings;
use Net::SSH::Perl;
use Net::SSH::Expect;
use Time::HiRes qw(usleep nanosleep);
Time::HiRes::sleep(5); #5 seconds #a look at "top" verifies this running .pl file pid.

my $remoteCmd = `ssh $remote_host -l $userID -i /home/$userID/.ssh/authorized_keys /sbin/service  /etc/init.d/c3-mi-nodeserver start`;
my $servicePID = $$; #this should be pid for .pl file running.
print "servicePID: " . $servicePID . "\n"; #prints the pid of the running .pl file.

当然,你会看到我填充的变量使它工作。 我有一个想法是:如果我启动一个服务,它将是当前运行的.pl文件+ 1的pid#; 但是,新服务启动是在远程服务器上,那么如何从远程服务器捕获它并将其返回到本地.pl文件?

想法?

1 个答案:

答案 0 :(得分:3)

使用该ssh命令,无法捕获刚刚在远程主机上启动的进程的PID。

您需要使用另一个 ssh来查找进程ID。但是真的 - 你想通过这样做完成什么?您是否可以使用service statusservice stop来操纵它?

如果你真的需要一个pid - service status可能会这样做 - 或者运行ps命令。