创建 perl 脚本以远程连接到另一台服务器并读取文件?

Posted

技术标签:

【中文标题】创建 perl 脚本以远程连接到另一台服务器并读取文件?【英文标题】:create perl script to connect remotely to another server and read File? 【发布时间】:2020-11-19 19:04:25 【问题描述】:

我是 perl 编程的新手,也是网络的新手。 我的任务是连接到远程服务器并使用 Perl 脚本从服务器读取文件。我知道如何从本地机器读取文件,但不知道如何从远程服务器读取?

Code to read file from local machine but not know how to connect to remote server and read file?

#!/usr/bin/perl

use 5.010;
use strict;
use warnings;

open(FH, 'C:\Users\saqib riaz\Desktop\saqi\properties.txt');

while(<FH>)

    "$_";
   
close(FH);

我用的是window操作系统和padre ide最新版的草莓

【问题讨论】:

【参考方案1】:

以下内容适用于 Strawberry Perl 5.30 版。它使用Net::SSH2 并在服务器上打印一个文件file.txt

use strict;
use warnings;
use Net::SSH2;

my $host = 'my.host.com';
my $user = 'user_name';
my $password = 'xxxxxxx';
my $ssh2 = Net::SSH2->new();
$ssh2->connect($host) or $ssh2->die_with_error;
$ssh2->check_hostkey('ask') or $ssh2->die_with_error;
$ssh2->auth_password($user, $password);
my $chan = $ssh2->channel() or $ssh2->die_with_error;
$chan->exec('cat file.txt') or $ssh2->die_with_error;
print while <$chan>;
$chan->close;

注意:Net::SSH2 预装了 Strawberry Perl,因此无需安装。

注意:我也尝试过Net::OpenSSH,但无法正常工作。

【讨论】:

尝试使用$ssh2-&gt;debug(1) 启用调试输出。您是否获得了有关该错误的更多信息? @saqibriaz 这意味着您使用的是非常旧的Net::SSH2 版本。升级吧! @HåkonHægland Net::OpenSSH 在 Windows 上不起作用。 @HåkonHægland 它可以安装在 Windows 上,因为该模块的某些部分可在 Windows 上使用(与命令引用有关的部分),但由于 OpenSSH 缺少功能,主要 SSH 功能不起作用移植到 Windows。 @saqibriaz 你的机器上安装了多个 Perl 吗?

以上是关于创建 perl 脚本以远程连接到另一台服务器并读取文件?的主要内容,如果未能解决你的问题,请参考以下文章

禁用“允许远程连接到此服务器”后,我仍然可以从另一台机器连接

连接到 xampp 上的服务器脚本

如何使用 Perl 通过 TCP 和 UDP 连接到远程机器?

在 Heroku 上存储 SSH 密钥以通过 SFTP 将 Rails 应用程序连接到远程

从 Bash 或 Perl 脚本运行 SQL 语句?

如何在 perl 脚本中使用 UTF8 连接到 MySQL?