perl FTP到z / OS,防止userid被添加到目标文件名前面

时间:2012-12-11 18:20:34

标签: perl ftp zos

我试图编写一个perl脚本(下面)来自动将源文件从Windows上传到z / OS(也就是MVS或OS / 390)。 put()方法似乎在z / OS上的远程数据集(文件)名称前面加上我登录的用户标识(" JCARTER")。我要上传到的远程数据集名称是" FSI.V121P01.INSTALL",它是一个分区数据集(PDS)。目标数据集名称的前缀为" JCARTER"导致找不到数据集,put()失败。我尝试过不同的引用目标文件名的方法,但我的用户ID仍然是文件名的前缀。我还尝试使用cwd()设置cwd,使用引用(' SITE',' QUOTESOVERRIDE')并引用(' SITE',& #39; DATASETMODE'),但仍然没有成功。

这是脚本:

use strict;
use Net::FTP;

my $HostIP="xxx.xxx.xxx.xxx";
my $ftp;

$ftp = Net::FTP -> new ($HostIP) or die "Cannot connect to zOS: $@";
$ftp->login("userid","pw") or die "Cannot login.", $ftp->message;
$ftp->ascii();

#$ftp->cwd();
#$ftp->quot('SITE', 'QUO');
#$ftp->quot('SITE', 'DATAS');
print $ftp->message;
$ftp->pwd();
print $ftp->message;
$ftp->put('J:\REL122\RPS100\A2WBLIB\C\a2wversn.c', 'FSI.V121P01.INSTALL(A2WVERSN)');
print $ftp->message;
$ftp->quit;

运行上述程序会产生以下消息:

表示类型是Ascii NonPrint "' JCARTER'"是工作目录。 JCARTER.FSI.V121P01.INSTALL(A2WVERSN)请求不存在的分区数据 吨。使用MKD命令创建它。

当我尝试添加cwd("")时,要删除当前的工作目录,我得到:

表示类型是Ascii NonPrint "' JCARTER'"是工作目录。 " /"是HFS工作目录。 存储数据集/FSI.V121P01.INSTALL(A2WVERSN) 打开/FSI.V121P01.INSTALL(A2WVERSN)失败。

似乎我非常接近。有什么建议 ?谢谢 - 约翰

1 个答案:

答案 0 :(得分:1)

听起来就像当你通过FTP连接时,你输入的数据集按你的用户名命名为“JCARTER”。

您是否尝试过cdup()将您从JCARTER命名数据集中取出?然后你可以cwd()进入FSI.V121P01.INSTALL PDS。

如果这不起作用,您可能只想建立连接,运行dir()并查看Net :: FTP为您返回的内容。这可能会使逻辑更具逻辑性。