用shell脚本把erp服务器上的文件上传到ftp指定路径上,下载的话调整一下命令即可
DATABASE ds GLOBALS "../../config/top.global" ################################################################################ # # Descriptions...: 上传文件到指定的FTP服务器上 # Input Parameter: p_host STRING FTP Server IP Address # p_name STRING FTP User # p_password STRING FTP Password # p_remotedir STRING 上传到服务器的目录 # p_saveasname STRING 上传并保存的文件名 # p_localfile STRING 上传文件的本地路径 # Return code....: LIKE type_file.num10 # 0:成功 # 1:连接失败 # 2:登录失败 # 3:服务器目录失败 # 4:发送失败 # 5:接受失败 # 6:断开失败 ################################################################################ FUNCTION aws_send_ftp(p_host,p_name,p_password,p_remotedir,p_saveasname,p_localfile) DEFINE p_host STRING, p_name STRING, p_password STRING, p_remotedir STRING, p_saveasname STRING, p_localfile STRING DEFINE l_ch base.Channel DEFINE ls_buf STRING DEFINE l_cmd STRING DEFINE lst_line base.StringTokenizer DEFINE li_i LIKE type_file.num10 DEFINE li_j LIKE type_file.num10 DEFINE ls_str STRING DEFINE li_err LIKE type_file.num10 DEFINE li_flag LIKE type_file.num10 DEFINE li_status LIKE type_file.num10 DEFINE l_str LIKE type_file.chr100 LET l_cmd= "ftp -v -n" ," ",p_host.trim() ," ","<<EOF" ,"\n" ,"user" ," ",p_name.trim() ," ",p_password.trim() ,"\n" ,"binary" ,"\n" ,"cd" ," ",p_remotedir ,"\n" ,"prompt" ,"\n" ,"put" ," ",p_localfile ," ",p_saveasname ,"\n" ,"bye" ,"\n" ,"EOF" LET l_ch = base.Channel.create() CALL l_ch.setDelimiter("\n") CALL l_ch.openPipe(l_cmd,"r") LET li_i=1 LET li_flag=FALSE LET li_err = 0 LET li_status =1 WHILE l_ch.read(ls_buf) DISPLAY ls_buf IF ( ls_buf.subString(1,4) NOT MATCHES "[0-9]*") THEN LET li_i = li_i + 1 CONTINUE WHILE END IF LET lst_line = base.StringTokenizer.create(ls_buf, " ") LET li_j = 1 WHILE lst_line.hasMoreTokens() LET ls_str = lst_line.nextToken() LET ls_str = ls_str.trim() LET l_str = ls_str SELECT SUBSTR(l_str,1,3) INTO l_str FROM dual #截取前三位 LET ls_str = l_str CASE li_j WHEN 1 CASE WHEN (li_status= 1 AND ls_str="220") LET li_status = 2 #连接成功 WHEN (li_status =2 AND ls_str="230") LET li_status =3 #登录成功 WHEN (li_status =3 AND ls_str="250") LET li_status =4 #改变目录成功 WHEN (li_status =4 AND ls_str="150") LET li_status =5 #发送数据成功 WHEN (li_status =5 AND ls_str="226") LET li_status =6 #接收数据成功 WHEN (li_status =6 AND ls_str="221") LET li_status =0 #断开成功 END CASE END CASE LET li_j = li_j + 1 END WHILE LET li_i = li_i + 1 END WHILE CALL l_ch.close() RETURN li_status END FUNCTION |
|