如何在Groovy脚本中配置(传递)位置ID以连接到SFTP服务器?

2020-08-20 04:38发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我需要在Iflow过程中...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我需要在Iflow过程中连接到sftp。

我尝试了从Iflow中部的SFTP服务器访问文件,但是我无法通过groovy脚本连接到sftp服务器,并且发生了UnknownHostException。

似乎必须使用云连接器(内部)的位置ID才能连接到sftp,但我不知道如何在groovy脚本中配置位置ID。

有人可以告诉我如何在groovy脚本中配置(传递)位置ID以连接到SFTP吗?

非常感谢!

闪亮的锯齿

7条回答
宇峰Kouji
2020-08-20 04:48

您好, Shine Zaw

云连接器提供了一个SOCKS代理,必须在您的SFTP连接代码中使用它。 从理论上讲,它应该像这样工作:

 JSch jsch = new JSch();
 会话会话=空;
 尝试{
//配置这个变量
 def sftpUsername =" johndoe"
 def sftpHostname =" myserver.com"
 def sftpPassword ="秘密"
 def cloudConnSubaccount =" <云连接的子帐户ID>"
 def cloudConnLocationId =" <云连接的位置ID>"

//创建基本会话
 会话= jsch.getSession(sftpUsername,sftpHostname,22)
 session.setConfig(" StrictHostKeyChecking","否")
 session.setPassword(sftpPassword)
//将Cloud Connector设置为代理
 SocketAddress addr = new InetSocketAddress(" localhost",20004)
     代理Proxy =新的Proxy(Proxy.Type.SOCKS,addr)
 Authenticator.setDefault(new Authenticator(){
         @Override
         受保护的java.net.PasswordAuthentication getPasswordAuthentication(){
 def encodingSubaccount = cloudConnSubaccount.bytes.encodeBase64()。toString()
 def encodingLocationId = cloudConnLocationId.bytes.encodeBase64()。toString()
             返回新的java.net.PasswordAuthentication(" 1。" +编码子帐户+"。" +编码的位置ID,新的char [] {})
         }
     });
 session.setProxy(代理)
//打开会话
 session.connect()


//创建SFTP频道
 频道频道= session.openChannel(" sftp")
 channel.connect()
 ChannelSftp sftpChannel =(ChannelSftp)通道


/* 做任何你想做的事 */


 sftpChannel.exit()
 session.disconnect()
 } catch(JSchException e){
//异常处理
 } catch(SftpException ee){
   //异常处理
 }
 

如果您想从代码中阅读有关Cloud Connector用法的更多信息,请查看以下帮助文章:

https://help.sap.com/viewer/cca91383641e40ffbe03bdc78f00f681/Cloud/zh-CN/c2461c31761b488c828e15b71263f3fd.html

一周热门 更多>