我使用的是net::ftp::foreign,但我一直收到一个关于文件找不到的错误,我不确定是我的语法错了还是我误解了如何使用它。
$LOGFILE = 'data_log' . $YYYYMMDD . '.log';
$sftp->setcwd('/tmp')
or die 'Unable to change working directory to /tmp: ' . $sftp->error;
print "CWD set\n";
my $ls = $sftp->ls('/tmp', names_only => 1, ordered => 1);
foreach my $file (@$ls) {
print $file . "\n";
}
print 'Getting file: ' . $LOGFILE . "\n";
$sftp->get('/tmp/data_log*', 'data_log' . $YYYYMMDD . 'log')
or die 'Could not get remote file: ' . $sftp->error;
我得到的错误是远程端不存在这样的文件,但我已经确认当我执行LS cmd时它们确实存在。
我的脚本有什么明显的错误导致它不能工作吗?
另外,我使用的是net::sftp::foreign因为net::sftp不会构建在运行10.7的MBP上
您有:
$sftp->get('/tmp/data_log*', 'data_log' . $YYYYMMDD . 'log')
是否存在名为/tmp/data_log*
的文件?还是要获取/tmp
中以data_log
开头的所有文件?
使用get
方法一次只能提取一个文件。地球仪不管用。为什么不将get
移动到foreach
循环中?当你看到你想要的文件时,抓住它。
foreach my $file ( @{$ls} ) {
print qq(Found file "$file" in directory\n);
# Is this the file we want to fetch?
if ( $file eq $LOGFILE ) {
print qq(Attempting to fetch "$file"\n);
$sftp->get( "$LOGFILE" ) #I think you're only interested in this file
or die qq(Could not fetch file "$LOGFILE" from directory: ) . $sftp->error;
print qq(Fetched file "$file"\n);
}
}
我的本地计算机上有一个文件。我有一个Perl脚本可以通过SFTP连接将此文件复制到远程位置()。
我是个初学者。我编写了一个perl脚本,该脚本执行以下操作 -在当前日期之前在“/X01/ABCD/ABC_LOGS/ABCD_LOGS”下创建目录,如果尚未创建,则以“YYYYMMDD”的格式创建。即:如果脚本在“2013年1月1日”运行,则在该路径下创建目录“20130101”。因此,每当需要检查日志时,总是查找当前日期之前的目录。 我有一个困难的时间,想出一个解决方案,打印一个消息时,没有文
在调用时,连接不会关闭,Perl脚本处于挂起状态,直到我手动终止进程。 下面是我在nohup.out文件中得到的错误。
在此之后,程序被终止,并出现上述错误。
我正在通过perl脚本使用net::SFTP::foreign模块连接到SFTP服务器,示例命令如下: net::sftp::foreign->new($host,端口=>'22',后端=>'NET_SSH2') null
我有一个用例,用户将多个csv文件放到远程目录中,然后放置ready.txt来指示文件已准备好使用。当我们的applcation在远程目录中看到ready.txt文件时,它应该开始使用sftp文件入站通道适配器将所有文件复制到本地目录,包括ready.txt。是否有办法确保readt.txt文件是最后一个要复制到本地目录的文件? 因为当文件从远程目录复制到本地目录时,我有另一个文件入站通道适配器在