【问题标题】:How to run a bash or shell script in a remote linux server using perl script and ssh如何使用 perl 脚本和 ssh 在远程 linux 服务器中运行 bash 或 shell 脚本
【发布时间】:2019-12-03 14:44:40
【问题描述】:

我想在远程服务器上运行 perl 脚本,它应该通过 ssh 登录到 linux 服务器并运行带有参数的 shell 脚本,然后打印结果,请帮助......

我有一个小脚本,它将登录并在远程主机上执行 ls 命令,但我想运行一个 bash 脚本。

use Net::SSH::Perl;

my $host = "xxxxx";
my $usr = "xxx";
my $pwd = "xxx";
my $ssh = Net::SSH::Perl->new($host);
$ssh->login($usr,$pwd);
my($stdout, $stderr, $exit) = $ssh->cmd("ls -l");
print "$stdout\n";

如何执行远程 shell 脚本而不是“ls -l”?

【问题讨论】:

  • 您以相同的方式运行任何远程命令...$ssh->cmd('whatever'); 无论使用何种语言实现都无所谓。如果远程计算机的正常路径中没有路径,您可能必须包含路径。
  • $ssh->cmd(' ./monitor status ');如果运行这个,我只得到空输出,我没有得到状态输出,它是一个带参数的 bash 脚本
  • 你能显示$ssh->cmd(' ./monitor status ')$stderr$exit 值吗?
  • 好了。您必须让您的程序在远程计算机上正确运行。安装任何提供该缺失库的软件包都是很好的第一步。

标签: linux shell perl ssh


【解决方案1】:

你的脚本很好。直接替换

"ls -l"

"/path/to/my/script arg1 arg2"

注意 1 - 在遥控器上使用完全限定的脚本路径是个好主意。

注 2 - arg1 和/或 arg2 当然可以是变量。 $arg1 $arg2。如果您不使用变量,则不需要双引号,而应使用单引号 '。

【讨论】:

猜你喜欢
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
  • 2018-01-31
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
相关资源
最近更新 更多