How to write code in servicenow to connect the ftp server through midserver using JavascriptProbe

pavankumarreddy
Kilo Contributor

heeeeI want to import the file to FTP Server through mid server

I have used File builder ftp API and i am able to send the file to Mid server. From Mid server i need to pick the file and send it to ftp server.

1. I have written code to connect the FTP server   as below , but i am getting the error. Please help me on this.

ExtractFileFTP   --- Mid server Script include.

jspr.setJavascript("var req = new ExtractFileFTP();req.processFTPFileTransfer();");

  jspr.addParameter("MID_SERVER_PATH", "Path of the midserver");

  //jspr.addParameter("MID_SERVER_FILE_NAME", "csv file name ");

  jspr.addParameter("MID_SERVER_FILE_NAME", midserverfileName);

  jspr.addParameter("Target_SERVER_NAME", " ftp server name");

  jspr.addParameter("TARGET_SERVER_USER_NAME", "user name for ftp");

  jspr.addParameter("TARGET_SERVER_PASSWORD", "password of the ftp t connect");

  jspr.create();

Script present in   Midserver script include

initialize: function() {

  this.log("Checking the intial log ");

  this.ftpClient                     = Packages.com.org.apache.commons.net.ftp.FTPClient;

  this.MID_SERVER_PATH             = probe.getParameter("MID_SERVER_PATH");

  this.MID_SERVER_FILE_NAME   = parseInt(probe.getParameter("MID_SERVER_FILE_NAME"));

  this.Target_SERVER_NAME       = probe.getParameter("Target_SERVER_NAME");

  this.TARGET_SERVER_USER_NAME = parseInt(probe.getParameter("TARGET_SERVER_USER_NAME"));

  this.TARGET_SERVER_PASSWORD   = probe.getParameter("TARGET_SERVER_PASSWORD");

  }

processFTPFileTransfer : function(){

pk = new Packages.com.sshtools.j2ssh.authentication.PublicKeyAuthenticationClient();

pk.setUsername(this.TARGET_SERVER_USER_NAME);

pk.setPassword(this.TARGET_SERVER_PASSWORD);

var ssh = new Packages.com.sshtools.j2ssh.SshClient();

var ignoreHost = new Packages.com.sshtools.j2ssh.transport.IgnoreHostKeyVerification();

ssh.connect(this.Target_SERVER_NAME,ignoreHost);

authState = new Packages.com.sshtools.j2ssh.authentication.AuthenticationProtocolState();

if(ssh.authenticate(pk)==authState.COMPLETE){

  var sftp = ssh.openSftpClient();

  sftp.lcd(this.MIDSERVER_FILE_PATH);

  sftp.cd(this.Target_SERVER_NAME);

  sftp.put(this.MIDSERVER_FILE_NAME); // }

  file = new Packages.java.io.File(this.MIDSERVER_FILE_PATH+this.MIDSERVER_FILE_NAME);

  // Destination directory

  dir = new Packages.java.io.File(this.MIDSERVER_FILE_PATH);

  // Move file to new directory

  success = file.renameTo(new Packages.java.io.File(dir, file.getName()));

  }

}

while running the above script i am getting BELOW ERROR : Help me how to overcome this issue.

<output>Evaluation error: Caused by error in JavaScript probe 'ExtractFileFTP' at line 1

==&gt;     1: var req = new ExtractFileFTP();req.processFTPFileTransfer();

java.net.DualStackPlainSocketImpl.connect0(Native Method)

java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)

java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)

java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)

java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)

java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)

java.net.Socket.connect(Socket.java:589)

java.net.Socket.connect(Socket.java:538)

java.net.Socket.&lt;init&gt;(Socket.java:434)

java.net.Socket.&lt;init&gt;(Socket.java:211)

com.sshtools.j2ssh.net.SocketTransportProvider.&lt;init&gt;(SocketTransportProvider.java:51)

com.sshtools.j2ssh.net.TransportProviderFactory.connectTransportProvider(TransportProviderFactory.java:79)

com.sshtools.j2ssh.SshClient.connect(SshClient.java:776)

com.sshtools.j2ssh.SshClient.connect(SshClient.java:664)

com.sshtools.j2ssh.SshClient.connect(SshClient.java:587)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

java.lang.reflect.Method.invoke(Method.java:497)

org.mozilla.javascript.MemberBox.invoke(MemberBox.java:138)

org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:292)

org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:2577)

org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)

org.mozilla.javascript.gen.script_include_ExtractFileFTP_27._c_anonymous_2(script_include:ExtractFileFTP:32)

org.mozilla.javascript.gen.script_include_ExtractFileFTP_27.call(script_include:ExtractFileFTP)

org.mozilla.javascript.ScriptRuntime.doCall2(ScriptRuntime.java:2645)

org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:2582)

org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:85)

org.mozilla.javascript.gen.probe_ExtractFileFTP_5._c_script_0(probe:ExtractFileFTP:1)

org.mozilla.javascript.gen.probe_ExtractFileFTP_5.call(probe:ExtractFileFTP)

org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:560)

org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3439)

org.mozilla.javascript.gen.probe_ExtractFileFTP_5.call(probe:ExtractFileFTP)

org.mozilla.javascript.gen.probe_ExtractFileFTP_5.exec(probe:ExtractFileFTP)

com.service_now.mid.script.MIDScript.executeCompiledScript(MIDScript.java:193)

com.service_now.mid.script.MIDScript.evaluate(MIDScript.java:109)

com.service_now.mid.probe.JavascriptProbe.probe(JavascriptProbe.java:46)

com.service_now.mid.probe.AProbe.process(AProbe.java:91)

com.service_now.mid.queue_worker.AWorker.runWorker(AWorker.java:119)

com.service_now.mid.queue_worker.AWorkerThread.run(AWorkerThread.java:20)

java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

java.lang.Thread.run(Thread.java:745)</output>

2 REPLIES 2

johnhughes1
Mega Contributor

Can you tell me what you did to resolve this?   I have the same issue.


jamesmcwhinney
Giga Guru

Did you ever find a way to get ServiceNow to retrieve a file from an external FTP server?

We have a similar requirement.