我需要
对于第1步:
my $server = "remoteservername.company.com";
my $ssh = Net::SSH::Perl->new("$server", debug => 1, protocol => 2, StrictHostKeyChecking => "no") or die "Error connecting server $server";
在终端
上产生消息
Connection established.
所以我假设我通过代码连接到远程服务器ssh。
对于第2步,如何使用本地服务器中的代码打开和读取远程服务器上的文件?这是迄今为止我能做的最好的事情:
use strict;
use warnings;
use diagnostics;
use warnings::register;
use Net::SSH::Perl;
use Net::SSH::Expect;
use Math::BigInt lib => "Calc,GMP,Pari";
my $server = "server09";
my $ssh = Net::SSH::Perl->new("$server", debug => 1, protocol => 2, StrictHostKeyChecking => "no") or die "Error connecting server $server";
#open(FILE, "/home/myid/f09.txt") || print("Unable to open test.o\n"); #works, on local, opens file[does not fail].
#open(FILE, "server09://home/myid/f09.txt") || print("Unable to open test.o\n"); #---> error: "Unable to open test.o"
my @remote_text = `this text is put into array.`;
my $remote_text = join ('',@remote_text);
open (FILE,'>/home/myid/f09.txt');
print FILE "$remote_text";
close (FILE);
exit(0);
但是,它不会向现有文件f09.txt
添加任何内容;如果我删除文件,open
也不会创建它。没有错误,但似乎没有联系远程文件。
只是对ssh的简单解释,然后从远程文件中读取会有所帮助。我看到的其他例子并没有削减它。当然,可能是我,漫长的一天,必须离开它一段时间。非常感谢您的时间!
答案 0 :(得分:0)
您实际上是在尝试通过SSH修改另一台计算机上存在的文件。 文件操作函数无法处理。
您是否可以从其他服务器下载文件,在本地更新并重新上传文件?
您可能还想尝试使用ssh命令:
my @remote_text = ('this text is put into array.');
my $remote_text = join ('',@remote_text);
my @args = ("ssh server09", "echo '$remote_text' > /home/myid/f09.txt");
system(@args) == 0 or die "system @args failed: $?"
答案 1 :(得分:0)
为了通过与另一台机器的SSH连接执行有趣的事情,您可能想尝试IPC::PerlSSH
。从其中一个例子:
use IPC::PerlSSH;
my $ips = IPC::PerlSSH->new( Host => "over.there" );
$ips->use_library( "FS", qw( mkdir chmod writefile ) );
$ips->call( "mkdir", "/tmp/testing" );
$ips->call( "chmod", 0600, "/tmp/testing" );
$ips->call( "writefile", "/tmp/testing/secret", <<EOF );
Some secret contents of my file here
EOF