3

ディレクトリ/src/にあるホストマシン上のファイルのリストがあります。ディレクトリにはさらにサブディレクトリがあります。現在、このディレクトリはマウント後にリモート マシンにコピーされます。これで、ファイルはリモート マシンのディレクトリ /dst に事前設定されます。

例。/src/a/f1、/src/b/f2 があった場合、リモート マシンには /dst/a/f1 、/dst/b/f2 があります。

現在、ホストディレクトリ、ホストファイルに関する情報しかありません。この情報を使用して、perl で ssh を使用してリモート マシン上のファイルにアクセスする方法を教えてください。/dst に cd して、そこからファイルを読み取る必要があります。この cd を実行して 1 つの ssh コマンドで読み取る方法を教えてください。

ありがとう。

4

2 に答える 2

2

に委任せずにすべてを実行したい場合は、 Net::SSH2File::Spec/usr/bin/sshを調べてください。

あなたは必要になるでしょうscp_get ( remote [, local ] )

このようになります。

use File::Spec ();
use Net::SSH2 ();
my ( $vol, $dir, $file ) = File::Spec::splitpath( $path );
my @dirs = File::Spec::splitdir( $dir );

## Change the root dir
$dirs[0] = 'dst'; # new_root_dir

my $new_remote_path = File::Spec::catfile( @dirs, $file );

  ## Almost right from Net::SSH2 SYNOPSIS
  my $ssh2 = Net::SSH2->new();
  $ssh2->connect('example.com') or die $!;
  if ($ssh2->auth_keyboard('fizban')) {

      my $sftp = $ssh2->sftp();

      my $fh = $sftp->open('/etc/passwd') or die;
      print $_ while <$fh>;

      ## or $ssh2->scp_get( $new_remote_path );
  }
于 2010-06-29T20:09:41.760 に答える
0

「man ssh」をグーグルで検索すると、SSH のマニュアル ページが表示されます。最初のリンク ( http://unixhelp.ed.ac.uk/CGI/man-cgi?ssh+1 ) をたどると、次のことがわかります。興味深い部分が指定されています。

ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec] [-D port] [-e escape_char] [-F configfile] [-i identity_file] [-L [bind_address:]port:host:hostport] [- l login_name] [-m mac_spec] [-O ctl_cmd] [-o オプション] [-p port] [-R [bind_address:]port:host:hostport] [-S ctl_path] [user@]hostname [コマンド]

...

ssh (SSH クライアント) は、リモート マシンにログインし、リモート マシンでコマンドを実行するためのプログラムです。rlogin と rsh を置き換え、安全でないネットワーク上で 2 つの信頼できないホスト間で安全な暗号化通信を提供することを目的としています。X11 接続と任意の TCP/IP ポートも、セキュア チャネル経由で転送できます。

ssh は、指定されたホスト名 (オプションのユーザー名を使用) に接続してログインします。ユーザーは、使用するプロトコル バージョンに応じて、いくつかの方法のいずれかを使用して、リモート マシンに対して自分の身元を証明する必要があります。

command が指定されている場合、コマンドはログイン シェルの代わりにリモート ホストで実行されます。

したがって、ssh user@hostname ls -lR /src/「ls -lR」を実際に必要なコマンドに置き換えてみてください。

EDIT ああ、ID ファイルの man ページを見てください。キーが設定されている場合は、それを使用して、コマンド ラインで SSH にパスワードを入力することを回避できます。また、ID ファイルへのパス全体に強力なアクセス許可が設定されていることを確認して、他の人がそのファイルを読み取ったり、置き換えたり、編集したりできないようにしてください。

于 2010-06-29T20:02:53.183 に答える