AS/400 FTP是一个很难完全搞懂的问题,因此在TechTarget的IT Knowledge Exchange(ITKE)上经常会有人提问。负责FTP安装和AS/400服务器通讯环境(正式改名为“IBM iSeries”)的广域网工程师,当他们需要在WAN上FTP文件时,会发现这篇文章很有用。
问:AS/400服务器如何对FTP服务器可见?
答:首先,你要从你的服务提供商那得到一个外部IP地址,然后你必须在防火墙上设置好映射IP地址。只要AS/400有一个能够工作的默认路由,那么FTP服务器就可以使用外部IP地址访问AS/400。
另外,如果AS/400是客户端,你需要通过命令行运行FTP来连上远程主机。只要客户机可以路由到远程主机,并且防火墙开放了FTP协议端口,那么就可以通讯了。
问:我如何在AS/400运行程序 FTP到一个FILE.savf?我知道怎样在DOS窗口输入命令,但是我想借助库里的PC文件(FILE.savf)到AS/400存档文件(FILEA)来使用AS/400程序(RPGLE or CLLE)。
答:首先,在AS/400选择一个文件(example.savf )并拖拽到/home/yourname目录。
然后,运行下面命令:
- CPYFRMSTMF FROMSTMF( example.savf )
- TOMBR( '/qsys.lib/qgpl.lib/example.file' )
- MBROPT( *REPLACE )
- CVTDTA( *NONE )
- ENDLINFMT( *FIXED )
- TABEXPN( *NO )
运行结果在QGPL的EXAMPLE的存档文件里。
但要满足一些条件。首先,一台NetServer服务器得运行在AS/400上,并能在windows网络中可用。在这个例子中,/home/username必须配置成共享目录并且为了使Netserver访问IFS,需要启动文件服务器。由于大多数站点是用NetServer和文件服务器,所以一切可能早都已配置好。
如果BPCS下载是直接保存到my /home/toml目录,那就不需要上述拖拽,一个单独的命令就够了。
问:如何在AS/400上编写FTP批处理程序到PPT扩展文件中?
你需要创建包含FTP命令的脚本文件,通常有下面两种方式:命令行;如果你需要做不同的转移,也可以编写程序来建立文件。但不论哪种情况,你都要用到以下命令:
- userid
- password
- cd remote_directory
- lcd local_library
- put local_file remote_file
- (OR)
- get remote_file local_file
- quit
下面列表解释了命令行的作用
- remote_directory = 远程设备的目录或库
- local_library = 本地设备的库
- local_file = 本地设备的文件名
- remote_file = 远程设备的文件名
根据传送的文件和位置,你也许还要其他命令,如BIN或ASCII。
执行脚本文件的***方法是创建一个小型CL程序:
1 对脚本文件覆盖FTP输入
- OVRDBF FILE(INPUT) TOFILE(YourLibrary/YourScript)
2 对日志文件覆盖FTP输出
- OVRDBF FILE(OUTPUT) TOFILE(YourLibrary/LogFile)
3 用主机名或者FTP地址开启FTP
- FTP RMTSYS(Your_Remote_System)
4 移除覆盖
- DLTOVR FILE(*ALL)
问:我把每天运行的报告保存在我的IFS的ABC的文件夹(wrklnk ABC)。该文件夹包含带有扩展日期的10个CSV文件夹。我该如何使用AS/400打包所有CSV文件,FTP到另外一个系统?
答:有很多不同的方法在AS/400上创建可用的ZIP文件。一个直接的方法是购买第三方产品、或是使用用户功能界面友好的系统、或是用程序代码执行zipping 文件算法。如果购买不现实或者不需要友好界面,那么安装有Qshell的AS/400s可以用Java Jar(或ajar)工具来创建.ZIP兼容文件。基本使用方法是在Qshell命令行中键入“jar”。
问:我该如何从一个目录复制IFS文件到另外一个文件,然后FTP该文件?
答:使用下面CPY命令:
- CPY OBJ('/MyDirectory/MyFile.csv') TOOBJ('/MyOtherDirectory/MyOtherFile.x')
为了通过FTP发送IFS文件,要使用FTP或者STRTCPFTP命令开启文件传输。登陆后,输入namefmt 1处理IFS上的分层文件系统。cd(改变目录)和lcd(本地改变目录)可以操纵目录架构。***,用put命令从源地址复制某个文件到目标地址。
问:我如何在AS/400上FTP一个文件到Zebra 170Xill打印机的磁盘R上?
答:你可以定义Zebra字符打印机,就像Epson 850。有了该配置,就没必要FTP该打印文件,因为操纵系统可以管理spool文件的发送。为了配置打印机为字符打印机,在安装时候配置成generic text。如果是在AS/400上,配置也一样。Zebra打印机通过USB连到电脑。
问:通过FTP到NT卡我们在AS/400上接收到文件。我可以很方便地从NT卡FTP到AS/400。有没有方法从NT卡的AS/400上开始或者由IFS处理文件?
答:一个可行方法是在DOS批处理文件中使用RMTCMD命令,如下所示:
- RMTCMD RUNQRY QRY(MYLIB/MYQUERY) //10.198.16.4
RMTCMD命令可以,但它需要有人提供用户配置信息和每次运行的密码。为了使一台服务器执行RMTCMD,你可以在iSeries Access运行CWBLOGON命令,它提供个人配置和密码。
一旦RMTCMD完成,用参数再一次运行CWBLOGON清除个人配置和密码缓存。运行带/?参数的命令,请查看Windows帮助文档。
问:为了从一台FTP服务器传送文件到iSeries,我要为FTP寻找更好的方法。传送文件依赖于一台要被更换的服务器,而FTP只能通过它。
当前进程使用FTP dir命令列出日志文件,然后创建一个即时脚本FTP该文件到iSeries。我会考虑在iSeries新建一个NETSHARE磁盘,然后在那上面传送文件,但是办公室是在WAN上的远程站点,有5250种进程通过该链路运行,外加上GUI和其他不同类型的数据和应用,我不希望它们的流量相互影响。
答:当两个系统都是iSeries,该列表可以包括DDM、SNDNETF、IFS的QFileSvr文件系统等。虽然有一些好处,如TCP,QoS,但所有这些都对共享同一信道的交互用户有潜在影响。根据数据,你可以压缩数据来降低对通信线路的影响。
另一个办法是根据数据来源,只要它们在源系统上可用,就发送单个数据而不是整个文件。如果是数据库数据,一个简单的触发程序就可以实时发送数据——直接写入到socket、DDM *DTAQ、DDM数据库或是其他相似的方法,你可以记录文件日志并且在传送到目标系统时实时接收日志图片(或使用远程日志)。因为数据传播的时间周期较长,这样做将对交互式用户的潜在影响降到最小,你也可以建立自己的节流控制。