任何人都可以告诉我如何将远程服务器中文件的名称存储到文件中,然后在本地服务器中获取包含该名称的文件?
有一个远程服务器,其中有5个文件,比如说
a.txt
b.txt
c.txt
d.txt
e.txt
我想在我的本地服务器上编写一个脚本,它将连接到远程服务器并写入远程服务器中存在的所有文件名(a.txt,b.txt,c.txt,d.txt,e。 txt)在一个临时文件中说filenames.txt。
所以filenames.txt将包含内容
cat filenames.txt
a.txt
b.txt
c.txt
d.txt
e.txt
之后我想使用任何协议将此文件(filenames.txt)传输到本地服务器?
如果可能,请提出建议或脚本。
感谢
答案 0 :(得分:1)
如果有相当少的文件执行此操作
ssh <server> ls <dirpath>/*.txt > result.txt
其中server是远程计算机的地址。我假设你熟悉ssh。
ssh将执行列出文件的ls
。
dirpath是文件所在的位置。
* .txt将过滤掉文本文件。
列表将通过ssh返回到您的计算机
> result.txt
会将结果存储到文件
答案 1 :(得分:1)
对于要在远程服务器上创建的文件:
ssh <server> "ls /some/dir > output.txt"
,用于在客户端计算机上创建的文件:
ssh <server> "ls /some/dir" > output.txt
。
看一下引号。
HTH
答案 2 :(得分:0)
这是link
#!/usr/bin/perl
use strict;
use warnings;
use Net::FTP;
my $ftp_site = 'localhost';
my $ftp_dir = '/home/simon/software';
my $ftp_user = 'a_login_name';
my $ftp_password = 'a_password';
my $glob = 'ex*';
my @remote_files;
my $ftp = Net::FTP->new($ftp_site)
or die "Could not connect to $ftp_site: $!";
$ftp->login($ftp_user, $ftp_password)
or die "Could not login to $ftp_site with user $ftp_user: $!";
$ftp->cwd($ftp_dir)
or die "Could not change remote working " .
"directory to $ftp_dir on $ftp_site";
@remote_files = $ftp->ls($glob);
foreach my $file (@remote_files) {
print "Saw: $file\n";
}
$ftp->quit();