ebs前台调用脚本,实现在linux 下通过smbclient上传文件到windows共享目录
百度上有很多关于安装samba软件,以及创建windows共享目录的方法,可去参考,如下主要讲一下我在使用smbclient上传文件到windows共享盘的主要一些步骤,以及如何在ebs前台调用。
1.ebs前台设置请求
可执行
并发程序,指定一个参数,文件名
挂请求
略
2. 写一个脚本如下,命名为XXX.prog,上传到服务器目录如 $FND_TOP/bin
与定义的可执行中的应用对应
共享目录: //IP/dvc1_interface$/hr
访问共享目录的用户名密码文件: pws
存放格式为
username=aaa
password=bbb
需要上传的文件: /tmp/Employee_hr_oracle.csv
前台传过来的参数: $5
需要注意的是,主机类型的并发请求,系统内定了四个参数(用户名/密码,用户ID,用户名,当前请求号),用户传入参数应该从第五号开始,如 “$5”
-A /tmp/pws 也可以写作 -U 用户名%密码
脚本文件名必须指定后缀名为.prog(否则下一步Link生成的文件并发可执行将不能识别,报错No such file or directory);
3. 给脚本授可执行权限
cd $FND_TOP/bin
chmod +x ./ MLPUTFILE.prog
4. 使用link命令生成同名的可执行文件
link fndcpesr MLPUTFILE
操作完成会自动创建了一个同名(没有后缀名)的文件,这个文件将会被并发请求调用执行
主要遇到的问题:
- tree connect failed: NT_STATUS_BAD_NETWORK_NAME
百度上说这个错误表示共享目录有误, 可能是目录不存在, 或者权限不对。但是我这些都没有问题。
我的命令是
原因是\ip\dvc1_interface$是共享出来,如果要放在/hr,应该写成smbclient //10.47.10.30/dvc1_interface$ -U username%password -c “cd hr;lcd /tmp; put Employee_hr_oracle.csv”
cd命令,切换远程目录;lcd命令,切换本地目录 - Error writing file: ERRSRV - ERRerror (Non-specific error code.)
putting file Employee_hr_oracle.csv as \Employee_hr_oracle.csv (0.0 kb/s) (average 0.0 kb/s)
这个报错是因为samba版本问题,公司的windows服务器是2016,旧samba是3.0.33,不能copy file,升级到 3.6.3 就可以了