You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已成功SFTP连接iSeries,如何向Library目录写入文件?

解决Linux到iSeries Library目录的SFTP上传问题

我编写了一个从Linux源服务器向iSeries服务器的Library目录传输文件的脚本,SFTP连接部分如下:

sftp -oIdentityfile=/root/.ssh/id_rsa my_user@server.mydomain.com <<EOF
    cd /qsys.lib/folder.lib
    put *.txt
    exit
EOF

目前已能成功SFTP连接iSeries服务器,也可切换至/qsys.lib/user.lib目录,但无法向该Library目录上传文件。请问能否通过在脚本中添加额外命令实现向该目标路径写入文件?

可行的解决方法

1. 明确指定QSYS对象格式上传

iSeries的Library目录本质是QSYS对象容器,直接上传文件需要指定物理文件和成员的格式。修改put命令,明确目标对象的结构:

sftp -oIdentityfile=/root/.ssh/id_rsa my_user@server.mydomain.com <<EOF
    cd /qsys.lib/folder.lib
    # 将local.txt上传为folder.lib下的myfile.file物理文件中的myfile.mbr成员
    put local.txt myfile.file/myfile.mbr
    exit
EOF

如果需要批量上传,可在Linux端循环处理每个txt文件,对应不同的成员名。

2. 先传临时目录再用CL命令导入

若直接SFTP到Library受限,可先上传到iSeries的普通用户目录,再通过SSH执行CPYFRMSTMF命令将流文件转换为Library中的物理文件成员:

# 第一步:SFTP上传到临时目录
sftp -oIdentityfile=/root/.ssh/id_rsa my_user@server.mydomain.com <<EOF
    put *.txt /home/my_user/temp/
    exit
EOF

# 第二步:SSH执行CL命令导入到Library
ssh -i /root/.ssh/id_rsa my_user@server.mydomain.com "CPYFRMSTMF FROMSTMF('/home/my_user/temp/file.txt') TOFILE(FOLDER/MYFILE) TOMBR(MYMBR) MBROPT(*REPLACE) CVTDTA(*AUTO)"

参数说明:

  • MBROPT(*REPLACE):覆盖已有成员内容,用*ADD可追加
  • CVTDTA(*AUTO):自动转换文本编码,也可指定*TEXT强制文本格式

3. 检查并确认权限

确保SFTP用户对目标Library拥有*OBJOPR和*ADD权限,对要创建的物理文件拥有*CRT权限。可通过SSH执行命令检查:

ssh -i /root/.ssh/id_rsa my_user@server.mydomain.com "DSPOBJA OBJ(FOLDER) OBJTYPE(*LIB)"

权限不足时需联系iSeries管理员调整。

内容的提问来源于stack exchange,提问作者Craig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:35:19