我想通过SSH连接到服务器并执行一个简单的命令,如"id",并获取它的输出并将其存储到我的主服务器上的文件中.我没有安装Net :: SSH的权限,这将使我的任务变得非常简单.请为我提供一个解决方案.我尝试使用反向标记,但我无法将输出存储在运行脚本的机器上.
Spa*_*ace 14
使用SSH远程运行命令的最佳方法是
$ ssh user@host "command" > output.file
Run Code Online (Sandbox Code Playgroud)
您可以在bash或perl中使用它.但是,如果要使用perl,可以按照brian在其注释中的建议或Perl FAQ中的" 如何保留自己的模块/库目录? "中的perl模块在本地目录路径中安装perl模块.而不是使用Net :: SSH我建议使用Net :: SSH :: Perl与下面的示例.
#!/usr/bin/perl -w
use strict;
use lib qw("/path/to/module/");
use Net::SSH::Perl;
my $hostname = "hostname";
my $username = "username";
my $password = "password";
my $cmd = shift;
my $ssh = Net::SSH::Perl->new("$hostname", debug=>0);
$ssh->login("$username","$password");
my ($stdout,$stderr,$exit) = $ssh->cmd("$cmd");
print $stdout;
Run Code Online (Sandbox Code Playgroud)
你总是可以在本地安装模块,这是你应该研究的方法; 但是,你应该能够逃脱
#!/usr/bin/perl
use strict;
use warnings;
my $id = qx/ssh remotehost id 2>&1/;
chomp $id;
print "id is [$id]\n"
Run Code Online (Sandbox Code Playgroud)
如果您设置了 ssh 主机密钥,则只需运行 ssh 系统命令,然后指定要在计算机上运行的命令。例如:
`ssh user@remoteserver.domain.com id`
Run Code Online (Sandbox Code Playgroud)
您应该能够剪切/存储该输出。
| 归档时间: |
|
| 查看次数: |
95142 次 |
| 最近记录: |