下面的groovyscript用于使用sftp从远程计算机获取文件。我需要使用sftp获取文件
import groovy.json.JsonSlurper
import com.jcraft.jsch.*
java.util.Properties config = new java.util.Properties()
config.put "StrictHostKeyChecking", "no"
JSch ssh = new JSch()
def rfile = "/path/to/remote/file/on/remote/host";
Session sess = ssh.getSession 'user','host', 22
sess.with {
setConfig config
setPassword password
connect()
Channel chan = openChannel "sftp"
chan.connect()
ChannelSftp sftp = (ChannelSftp) chan;
def flowFile = session.get()
if(!flowFile) return
flowFile.write{rawIn, rawOut->
def keyValueList = rawIn.withReader("UTF-8"){ new JsonSlurper().parse(it) }
sftp.get("rfile/abc.txt").withReader("UTF-8"){reader->
rawOut.withWriter("UTF-8"){writer->
reader.eachLine{line->
keyValueList.each{ if(it.Key) line = line.replaceAll(it.Key, it.Value) }
writer << line << '\n'
}
}
}
}
chan.disconnect()
disconnect()
REL_SUCCESS << flowFile
}获取错误:
unable to resolve class JSch @ line 7, column 6. JSch ssh = new JSch() org.codehaus.groovy.syntax.SyntaxException我使用的是导入import com.jcraft.jsch.*,但似乎JSch类不可用或导入不合适。
发布于 2021-11-23 23:49:45
您必须从http://www.jcraft.com/jsch/下载jsch库并将jars放入nifi/lib目录
或者,如果您的nifi服务器能够访问internet,则可以使用此脚本注释从公共存储库下载库。
@Grab(group='com.jcraft', module='jsch', version='0.1.55')
import com.jcraft.jsch.*
...https://stackoverflow.com/questions/70087797
复制相似问题